티스토리 뷰
https://rominirani.com/gradle-tutorial-part-3-multiple-java-projects-5b1c4d1fbd8d
2018.06.21
멀티프로젝트 구성은 위의 링크를 따라서 적용하면 된다.
그런데 spring framework의 공통 모듈은 main method가 없다.
이 부분에 대해서는 gradle 내의 jar 옵션을 좀 수정해주니 정상적으로 작동 되는 것을 알 수 있었다.
우선 다음과 같이 1개의 root project에 3개의 프로젝트가 있다고 가정해보자.
root
ㄴ common
ㄴ main
ㄴ sub
이런 형태로 구성이 되어 있다고 했을 때 main과 sub는 common을 각각 공통으로 참조해서 사용하게 된다.
이때 root의 설정은 다음과 같다.
settings.gradle
rootProject.name \= 'root'
include 'common', 'main', 'sub'
build.gradle
apply plugin: 'base'
buildscript {
ext {
springBootVersion = '2.0.2.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
def elasticsearchVersion = '6.2.4'
subprojects {
group 'com.root'
version '0.1'
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: "java"
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies{
compileOnly('org.projectlombok:lombok')
testCompileOnly('org.projectlombok:lombok')
}
jar {
manifest.attributes provider: 'gradle'
}
}
base가 되는 프로젝트는 base plugin을 명시해준다고 한다.
subprojects 안에는 settings.gradle에 설정한 하위 프로젝트들에게 공통적으로 dependency를 추가해주는 구문이다.
common 의 gradle설정은 다음과 같다.
build.gradle
bootJar {
classifier = 'boot'
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile('org.springframework.boot:spring-boot-starter-webflux')
compile('org.springframework.boot:spring-boot-starter-data-jpa')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
group = 'com.common'
version = '0.0.1-SNAPSHOT'
jar {
manifest {
attributes 'Implementation-Title' : 'common',
'Implementation-Version' : version
}
enabled = true
}
여기서 좀 봐야할 부분은 jar 안에 enabled 부분이다. main method가 없는 프로젝트는 저런 형태로 설정해야 하는거 같다.
main 의 설정을 살펴보자.
build.gradle
apply plugin: 'java'
group = 'com.main'
version = '0.0.1-SNAPSHOT'
jar {
manifest {
attributes 'Implementation-Title' : 'main',
'Implementation-Version' : version
}
}
dependencies {
runtime('mysql:mysql-connector-java')
compile("org.springframework.boot:spring-boot-starter-web")
testCompile('org.springframework.boot:spring-boot-starter-test')
testCompile "org.codehaus.groovy:groovy"
testCompile('org.spockframework:spock-core:1.1-groovy-2.4')
testCompile('org.spockframework:spock-spring:1.1-groovy-2.4')
compile project(':common')
}
위와 같이 common의 프로젝트를 추가시켜주고 별도로 필요한 library를 작성해주면 된다.
그리고 이 프로젝트의 jar 설정에는 enabled 구문이 없다.
이건 sub도 동일하다.
간단하게 셋팅 부분을 작성했고, 추가적으로 상세한 내용들은 다음에 찾아서 작성해보겠다.
'Study > gradle' 카테고리의 다른 글
gradle 초기 셋팅 (1) | 2019.04.10 |
---|---|
manifest 파일을 못찾겠읍니다. (0) | 2019.04.10 |
runnable jar로 묶는 법 (0) | 2019.04.10 |
gradle location is incorrect (0) | 2019.04.10 |
default source folder setting in eclipse (0) | 2019.04.10 |
- Total
- Today
- Yesterday
- coroutine
- 코루틴
- spring property
- java calendar
- 전자정부프레임워크 tiles
- java 폴더구조 구하기
- Database#transaction
- Kotlin
- POI EXCEL
- JSTL
- jstl foreach
- github image 첨부시 주의할점
- jstl split
- spring ExcelView
- mybatis Merge
- POE Excel 만들기
- MyBatis 팁
- java 특정문자 갯수구하기
- java 설치
- jstl 커스텀 태그
- java 설정
- JSP 세션
- java 압축 풀기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |