apply plugin: 'war'
src/main/webapp
webAppDirName
값을 프로젝트에 상대적인 디렉토리로 지정하면 웹 애플리케이션 리소스의 디렉토리를 변경할 수 있다.assemble
태스크가 war
태스크에 의존하도록 변경한다.src/main/webapp
: 웹 애플리케이션 소스. webAppDirName
값으로 조정compile
, runtime
configuration과 동일한 스코프이지만, WAR 압축파일에는 추가되지 않는다.providedCompile
providedRuntime
commons-httpclient:commons-httpclient:3.0@jar
처럼 끝에 @jar
를 붙인다.// 기본 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' }
프라퍼티이름 | 타입 | 기본값 | 설명 |
---|---|---|---|
webAppDirName | String | src/main/webapp | 웹 애플리케이션 소스 디렉토리의 이름. 프로젝트 디렉토리에 상대경로 |
webAppDir | File | projectDir/webAppDirName | 웹 애플리케이션 소스 디렉토리 |
war
태스크는 src/main/webapp의 컨텐츠를 war 파일의 루트로 복사한다. webapp
디렉토리는 WEB-INF
를 포함하고 있어야 한다. WEB-INF
는 web.xml
을 포함해야 한다.WEB-INF/classes
로 복사된다.WEB-INF/lib
로 복사된다.war { archiveName = "${baseName}.${extension}" // projectName.war }
*.war
파일을 생성한다. 압축 안한 웹 애플리케이션이 필요하다면,task explodedWar(type: Copy) { description = 'Generate exploded war' group = 'build' dependsOn war.dependsOn into "${buildDir}/exploded" with war }
war.doLast { ant.unzip(src: war.archivePath, dest: "${buildDir}/exploded") }
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 로 복사 }