2017년 7월 4일 화요일

IntelliJ IDEA CE + Spring Boot + Gradle 프로젝트 생성하기

 IntelliJ IDEA CE(Community Edition)버전을 이용해서 Spring Boot 프로젝트를 수행하는 데 이용할 수는  없을까해서 이런 저런 시도를 해보았다. Gradle을 이용해서 프로젝트를 수행한다면 어차피 IntelliJ IDEA CE 버전도 문제가 없을 것 같았기 때문이다. 그래서 여러가지 시도를 해보고 가장 최신 버전의 Spring Boot를 이용하면서 IntelliJ스러운 프로젝트를 생성하는 방법을 여기에 기록해볼까 한다.

 최신 버전의 Spring Boot를 이용하는 Gradle 프로젝트 파일을 생성하는 건 역시 "Spring Initializr"를 이용하는 것이다. 일단 https://start.spring.io에 접속해서 프로젝트를 생성하자.

 한 화면으로 생성이 끝나는 간단한 작업이다. 각 선택 항목들도 모두 이해못할 것들은 없다. 중요한 건 빨간색 사각형 부분들이다. Gradle Project로 생성하고 있는 지 확인하도록 하자.  그리고 Group과 Artifact는 Java의 root package이름이 되므로 예제처럼 Group은 (company의) reverse domain 형태로 넣어주고 Artifact는 프로젝트 이름을 소문자로 넣어주자. 나중에 IntelliJ에서 프로젝트를 생성할 때는 "Group.Artifact"를 Group ID로 사용할 것이다.

 "Switch to the full version."링크를 누르면 dependency를 추가하는 등의 세부적인 작업을 할 수 있다. 하지만 추후에도 얼마든지 가능한 작업들 이므로 여기서는 간단한 설명을 위해 그냥 최소한의 설정으로 생성하겠다.

 "Generate Project" 버튼을 누르면 프로젝트가 zip으로 묶여서 다운로드된다. 일단 파일을 원하는 곳에 풀어두도록 하고 이제 IntelliJ를 실행해서 새로운 프로젝트를 만들자.

 "Create New Project"를 눌러서 새로운 프로젝트를 만들자.

 Gradle > Java 를 선택하고 Next를 눌러 다음으로 진행한다.

 GroupId 항목에는 Spring Initializr에 넣었던 Group과 Artifact를 그림처럼 연결해서 넣어주고 ArtifactId는 원하는 Project 이름을 넣어준다. 

 GroupId 항목은 build.gradle 파일의 group 정보로 들어가게 되고 Java의 루트 패키지가 될 것이다. ArtifactId는 프로젝트 이름으로서 그리고 Module 이름으로서 사용이 된다.

 이후는 일반적인 Gradle Java 프로젝트와 같다. 그림과 같이 선택해주고 Next를 눌러 다음으로 넘어가자.

 프로젝트 위치를 원하는 곳으로 설정하고 Finish를 눌러서 프로젝트 생성을 완료하자.

 몇 초 정도 생성작업을 하고나서 아래 그림과 같은 구조로 프로젝트가 생성된다. (왼쪽 프로젝트 뷰의 트리구조 참고)

 IntelliJ에서 프로젝트를 생성하고 나서 build.gradle 파일을 열어보면 위의 그림과 같이 간단한 내용으로 생성되어있다. "Spring Initializr"에서 생성한 프로젝트의 build.gradle과 비교해보면 빨간색으로 표시한 group 정보 말고 나머지 내용은 모두 이미 존재한다는 걸 알 수 있다. 

 대충 짐작이 갈 것이다. IntelliJ에서 생성한 build.gradle 파일에서 group 정보만 남기고 나머지는 모두 삭제하고 Spring Initializr 에서 생성한 build.gradle 파일의 내용으로 대체하도록 한다. 그리고나서 Spring Initializr가 생성한 프로젝트의 src 폴더를 IntelliJ가 생성한 프로젝트로 옮겨서 덮어쓰면 끝이다. 최종적으로 아래 그림과 같은 프로젝트가 될 것이다. 

 build.gradle 파일의 내용은 Spring Initializr가 생성한 그대로의 내용에 group 정보만 넣은 것과 같고 src 폴더를 보면 Spring Initializr가 생성한 @SpringBootApplication 클래스와 테스트 클래스가 보인다. 

 간단히 요약하자면 IntelliJ가 생성한 Gradle Java 프로젝트를 Spring Initializr가 생성한 프로젝트의 내용으로 덮어씌우는 작업이다. 단지 Group, Artifact 정보를 package 경로와 맞추기 위해서 몇 가지만 맞춰주면 되는 것이다. 

 IntelliJ IDEA CE에서 Import를 하는 방법으로 가져와 봤지만 위와 같은 구조로 생성이 되지 않는 것으로 결론을 냈다. 난 IntelliJ가 생성하는 Gradle Java 프로젝트의 기본 구조가 마음에 든다. 그리고 Spring Intializr가 생성하는 최신 build.gradle 파일도 믿음이 간다. 그래서 이런 방법을 사용하는 것이다. 

 참고로 Runnable Jar 파일을 생성하는 방법을 설명하자면 Gradle뷰에서 보이는 태스크들 중에서 'build'를 더블클릭해서 실행하는 것이다. 'build' 태스크를  build/libs/ 폴더 아래 Runnable Jar가 생성된다. build.gradle 파일에 java 플러그인이 적용되었기 때문에 'jar' 태스크가 있지만 이 'jar' 태스크는 build.gradle을 추가로 수정하지 않으면 dependency가 있는 라이브러리까지 묶어놓은 Runnable Jar를 만들지는 못하므로 반드시 'build' 태스크를 이용하도록 하자.

댓글 1개: