개발 도구/IntelliJ

[IntelliJ] Spring Initializr를 이용한 Spring Boot 프로젝트 생성 시 알아야 할 항목들 (Group, Artifact, Package name..)

th42500 2022. 12. 11. 23:12

오늘은 우리가 Spring 프로젝트를 생성할 때 Group, Artifact, Package name 등 많은 항목들을 설정하게 된다.

나는 문득 이 각각의 설정이 어떤 것을 의미하는지 궁금해졌고 나와 같은 사람이 많을 것이라는 생각에 블로그에 정리를 하게 되었다.

 

 

❓ Spring Initailizr란?

IntelliJ Ultimate 버전을 사용하는 사람들은 Spring Initializr가 내장되어 있어 Spring 프로젝트를 IntelliJ에서 바로 생성할 수 있다.

그러나, Community 버전을 사용하는 사람들은 아래의 링크에 접속하여 외부에서 프로젝트를 생성하고 이를 압축파일로 다운받는 방식으로 Spring 프로젝트를 생성할 수 있다.

https://start.spring.io/

 

 

✔ 스프링 프로젝트 생성 시 설정하는 항목

나는 현재 IntelliJ 2022.02.03 Ultimate 버전을 사용하고 있다.

우리는 프로젝트를 생성하고자 할 때 다음과 같은 창을 마주할 수 있다.

IntelliJ에서 프로젝트 생성하고자 할 때 뜨는 창

각 설정은 다음과 같다.

  • Name : 프로젝트의 이름
  • Location : 프로젝트 생성 위치
  • Language : JVM 상에서 동작하는 언어 선택
  • Type : 빌드 툴 선택
  • Group : 해당 프로젝트를 정의하는 고유한 식별자 정보인 그룹을 설정하는 항목으로, 이는 프로젝트를 진행하는 데에 영향을 주지 않음
  • Artifact : 세부 프로젝트를 식별하는 정보를 기입
  • Package name : Group과 Artifact를 설정하면 자동으로 입력, 위의 모습 그대로 설정했을 시 com 패키지 > example 패키지 > demo 패키지의 구조로 프로젝트가 생성
  • JDK : Java 기반의 소프트웨어를 개발하기 위한 도구들로 이루어진 패키지를 JDK라고 하며, 해당 버전은 사용하고자 하는 Java의 버전과 일치하도록 설정
  • Java : 최근 Java가 17버전이 나오고, 이에 따라 IntelliJ 업데이트가 진행되면서 기본적으로 17로 설정이 되는 것 같다. 이는 나중에 프로젝트 빌드 실패시 build.gradle (Maven 프로젝트라면 pom.xml)에서 설정 변경 후 다시 Build를 진행하면 해결이 됨
  • Packaging : 애플리케이션을 쉽게 배포하고 동작하게 할 파일들의 패키징 옵션 설정
    • Jar : CMD를 이용하여 애플리케이션을 서버에서 실행할 수 있도록 하는 아카이브 파일로, 주로 jar 형식으로 배포
    • War : Tomcat에 바로 넣어서 애플리케이션을 실행하게 되면 ROOT 폴더가 자동으로 생성되며 서버에서 실행할 수 있도록 하는 아카이브 파일로, 이클립스 같은 IDE가 없어도 애플리케이션을 버서에 띄울 수 있도록 해줌

Jar와 War에 대한 설명은 정확하지 않고 기존에 알고 있는 지식으로 작성하였으므로 참고만 하길 바람

 

 

IntelliJ에서는 위와 같이 프로젝트 이름, 동작 언어, 빌드 툴, 식별 정보 등을 설정 후 Next를 누르면 의존성을 추가하는 화면이 나오게 되는데, 원하는 의존성을 추가하여 프로젝트를 생성하면 된다.

IntelliJ Ultimate 프로젝트 생성 시 의존성 관리 화면

 

Community의 버전 역시 https://start.spring.io/ 에 들어가면 위의 동일한 항목들에 대해 설정할 수 있다.

아래의 사진처럼 Community 버전의 외부에서 프로젝트 생성 시 프로젝트 설정(왼쪽)과 의존성 설정(오른쪽)은 한 페이지 내에서 모두 설정 가능하다.

start.spring.io 화면

 

개발자는 코드의 흐름을 잘 따라가는 것도 중요하지만 해당 설정이 어떤 것에 대한 설정인지, 왜 필요한지 등을 잘 알고 있어야 한다고 생각한다. 

오늘은 늘 Spring 프로젝트를 하며 아무렇지도 않게 지나갔던 설정 항목들에 대해 알아보는 시간을 가져 조금은 뿌듯한 것 같다.