목차

Gradle Web(War) Plugin

apply plugin: 'war'

태스크

프로젝트 레이아웃

의존성 관리

// 기본 Servlet API
dependencies {
    providedCompile 'javax.servlet:servlet-api:2.5'
}

특정 라이브러리가 servlet-api를 compile 스코프로 이미 가지고 있는 상황에서는, 해당 라이브러리 의존성에서 exclude를 해준다.

dependencies {
    compile('some:library:1.0') {
        exclude group: 'javax.servlet', module: 'servlet-api'
    }
    providedCompile 'javax.servlet:servlet-api:2.5'
}

Convention Properties

프라퍼티이름 타입 기본값 설명
webAppDirName String src/main/webapp 웹 애플리케이션 소스 디렉토리의 이름. 프로젝트 디렉토리에 상대경로
webAppDir File projectDir/webAppDirName 웹 애플리케이션 소스 디렉토리

war 태스크

압축 풀린 war

War 커스터마이징

configurations {
   moreLibs
}
 
repositories {
   flatDir { dirs "lib" }
   mavenCentral()
}
 
dependencies {
    compile module(":compile:1.0") {
        dependency ":compile-transitive-1.0@jar"
        dependency ":providedCompile-transitive:1.0@jar"
    }
    providedCompile "javax.servlet:servlet-api:2.5"
    providedCompile module(":providedCompile:1.0") {
        dependency ":providedCompile-transitive:1.0@jar"
    }
    runtime ":runtime:1.0"
    providedRuntime ":providedRuntime:1.0@jar"
    testCompile "junit:junit:4.8.2"
    moreLibs ":otherLib:1.0"
}
 
war {
    from 'src/rootContent' // 웹 애플리케이션 루트에 지정된 경로 이하의 파일 셋 추가, into에 웹 애플리케이션 루트에 상대적인 경로로 복사될 목표 디렉토리 지정 가능.
    webInf { from 'src/additionalWebInf' } // WEB-INF에 지정된 파일셋 추가, into에 WEB-INF에 상대적인 경로로 복사될 목표 디렉토리 지정 가능.
    classpath fileTree('additionalLibs') // WEB-INF/lib 에 지정된 파일셋 추가
    classpath configurations.moreLibs // WEB-INF/lib 에 지정된 구성 추가
    webXml = file('src/someWeb.xml') // WEB-INF/web.xml 로 복사
}

참조