티스토리 뷰

Study/gradle

gradle multi project 셋팅

dev ms 2019. 4. 10. 23:21
반응형

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