Study/Java
[Gradle] 두 개의 프로젝트를 하나로 프로젝트로 변경하며 gradle 설정
black6765
2022. 11. 28. 21:11
상황
- 프로젝트를 시작할 당시에는 gradle을 사용하지 않았음
- 프로젝트를 진행함에 따라 gradle을 적용하려고 함
- 하나의 루트 프로젝트(CacheServerProject)와 두 개의 프로젝트(Server, Client)로 이루어짐
- Server와 Client
- 일반적인 gradle의 디렉토리 구조와 상이함
- src/main/java와 같은 구조로 설계하지 않음
- 이 두 개의 프로젝트를 유지하며 gradle을 사용하고자 함
- Server와 Client 각각 jar 파일을 생성할 수 있어야 함
적용
gradle을 적용하기 위해서는 두 개의 gradle 관련 파일을 만들어야 함
- build.gradle
- settings.gradle
build.gradle
plugins { id 'java' } group 'org.example' version '1.0-SNAPSHOT' repositories { mavenCentral() } dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' } test { useJUnitPlatform() }
InteliJ에서 gradle로 프로젝트 생성시 초기에 주어지는 설정을 그대로 복사함
settings.gradle
rootProject.name = 'CacheServerProject' include 'Server' include 'Client'
- 처음에는 rootProject.name만 설정하였음
- 여기에서 멀티 프로젝트의 이름을 기입하면 됨
- include ‘[프로젝트 이름]’
성공적으로 gradle을 적용한 후에 디렉토리 구조는 다음과 같음
- CacheServerProject ⇒ Root Project
- Client
- src/main/java/com/blue/cacheserver
- message
- start
- test
- 이하 디렉토리 생략
- build.gradle
- src/main/java/com/blue/cacheserver
- Server
- src/main/java/com/blue/cacheserver
- cache
- client
- message
- service
- task
- 이하 디렉토리 생략
- build.gradle
- src/main/java/com/blue/cacheserver
- gradle
- .gitignore
- build.gradle
- gradlew
- gradlew.bat
- README.md
- settings.gradle
- Client
- CacheServerProject ⇒ Root Project
gradle을 이용해 build 하게 되면 Client와 Server 디렉토리에 build 디렉토리가 생성됨
하위의 libs로 가면 jar 파일이 생성되어 있음
하지만 실행해보면 main-class를 찾지 못했다면서 실행되지 않음
다음 내용을 Client, Server 프로젝트의 build.gradle에 추가
ex) Main Class의 경로가
com.blue.cacheserver.start.ClientMain
일 때jar { manifest { attributes 'Main-Class': 'com.blue.cacheserver.start.ClientMain' } }
이 설정을 추가하면 정상적으로 main 클래스를 인식함