본문 바로가기

TroubleShooting/Java

gradle multi build for war

728x90

gradle muliti project 인 경우 sub 모듈만 따로 war 로 빌드를 하기 위한 내용을 정리해본다.

 

구성

- server-api : API 서버

- common : 공통 모듈(domain, dao)

 

gradle 5.X 이상일 경우

- build.gradle (root)

project(':server-api') { 
    dependencies { 
        compile project(':common') 
    } 
}

server-api, common 을 가진 project 에서 server-api 만 war 로 빌드한다.

- build.gradle(:server-api)

apply plugin: 'war'

bootWar.archiveName = 'multiplatform-auth-server-api.war'

dependencies {
    compile project(':common')

    implementation ('org.springframework.boot:spring-boot-starter-web') {
        exclude module: "spring-boot-starter-logging"
        exclude module: "logback-classic"
    }

    compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.9.8'
...
}

gradle 5.X 이하일 경우

 

- build.grade(:web) : 위에서 web 이라는 모듈은 없지만 mkyong.com 예제를 그대로 사용함.

project(':web') {

    apply plugin: 'war'

    war {
		archiveName 'hello-gradle.war'
    }

    dependencies {
        compile project(':core')
		providedCompile 'javax.servlet:servlet-api:2.5'
		providedCompile 'org.apache.tomcat:tomcat-jsp-api:7.0.55'
        //...
    }
}

참고 :

https://mkyong.com/gradle/gradle-war-plugin-change-output-war-filename/