반응형

IntelliJ에서 Spring Framework 프로젝트를 Gradle Project로 변경하는 방법

 

사내 솔루션이 구축된지 3년 채 되지 않았는데, 외주사에서 Spring Framwork의 구조로 구축하였으며, 레거시 코드가 많이 존재한다. 
해당 프로젝트에서 신규 화면을 구성해야하는데 다른 외주사와 같이 협업하는 과정에서 배포방식을 변경하게 되면서 해당 프로젝트도 Gradle Project로 변경하게 되어 정리해보고자 한다. 

 

내 프로젝트의 구조는 변경하지 않고 Spring Framework의 일반적인 구조를 따르면서 Gradle Project로 변경하는 방법을 정리해본다. 

 

1. Gradle 프로젝트 생성

새로운 디렉토리를 만들거나 기존의 Spring 프로젝트 디렉토리로 이동하여 터미널 또는 명령 프롬프트에서 다음 명령을 실행하여 Gradle 프로젝트를 생성한다. 

gradle init --type java-library

이 명령어는 Java 라이브러리 프로젝트를 초기화하며, Gradle 빌드 스크립트 파일인 build.gradle을 생성한다.

2. build.gradle 파일 설정
build.gradle 파일을 열어 프로젝트의 의존성과 설정을 정의합니다. Spring 프레임워크와 관련된 의존성을 추가하고, 프로젝트 설정을 수정합니다. 
build.gradle에 불러오는 dependency는 모두 Maven Repository(https://mvnrepository.com/) 에서 가져오는데, 해당 사이트에서 조회하지 않는 로컬 라이브러리가 존재하여 따로 추가했다. 프로젝트의 루트 디렉토리에 lib 를 생성하여 로컬 라이브러리를 추가하였다. 로컬 라이브러리를 build.gradle의 dependency로 불러오려면 아래와 같이 설정하면 된다.

implementation files('lib/로컬라이브러리명.jar')

3. 프로젝트 구조 유지
Gradle로 변경하는 과정에서 프로젝트 구조를 크게 수정할 필요는 없다. Spring 프레임워크의 기본 구조를 계속 사용할 수 있다.

 

4. 빌드 및 실행
해당 명령어를 통해 빌드를 한 후, 톰캣을 실행하면 된다. 현재 IntelliJ 무료버전을 사용하고 있어, Tomcat를 별도로 설치해야됐기 때문에, Smart Tomcat을 설치한 후, 서버를 구동하였다.

./gradlew build

 

이 때, source package 는 src 폴더를 선택하면 되는데, 선택 후에는 Java file outside of source root 와 같은 에러가 발생되어 *.java 파일이 인식되지 않는 경우가 존재한다. 이때, build를 새로해주거나, IntelliJ - File - Invalidate Cachs 하고 나서 아래와 같은 주의사항을 따르면 된다. 

주의사항

1. build.gradle 파일은 gradle 프로젝트 루트에 생성하여 환경설정을 하면된다.
2. maven repository에서 추가할 수 없는 로컬 라이브러리는 IntelliJ - FIle - Project Structure - Library 에서 추가해주면 된다.

 

추가) 프로젝트 재빌드시 안되는 경우가 있어 아래 내용을 추가한다. 이후 제대로 실행되었다.

 

5. setting.gradle

rootProject.name = '프로젝트명'
include(':프로젝트명')

위 내용으로 변경한다. 나의 source root는 루트 프로젝트/src 디렉토리다.

6. build.gradle

// 플러그인에 추가
plugins {
	id 'java'
    id 'application'
}

apply plugin: 'java'
// public static void main(String[] args) 패키지 
mainClassName = 'apps.framework.boot'

sourceSets {
    main {
        java {
            srcDirs("src")
        }
    }
}


프로젝트의 구조를 변경하지 않고 gradle 프로젝트로 변경하는 작업이 생각보다 오래 걸렸다.
프로젝트는 거의 20번 이상 삭제 후 생성 작업을 반복했던 것 같다. 

 

나의 경우를 겪는 개발자가 존재할 수 있어 정리해둔다.

참고
https://www.jetbrains.com/help/idea/work-with-gradle-projects.html#project_encodings

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기