maven-war-plugin
Maven-war-plugin은 pom.xml의 dependency에 선언된 각종 라이브러리들과 Java class 파일 웹 어플리케이션의 각종 리소스들을 모아서 하나의 Web Application Archive 압축 파일로 만들어줍니다.
PS. War plugin 3.0 버전 이후에는 failOnMissingWebXml의 default 값이 false로 변경되었습니다.
1. War Plugin의 Goals
war:war
war 형태의 압축 파일로 빌드하는 명령입니다. 압축 파일은 WAS에 의해 압축이 풀리고 파일이 많은 경우에는 압축 해제 시간이 오래 걸릴 수 있습니다.
war:exploded
war 압축 형태를 해체한 디렉토리 형태 구조로 빌드하는 명령입니다. 압축 및 해제 과정이 불필요하고 별도의 디렉토리에 원본 소스를 복사하여 만듭니다. 원본 소스를 건드리지 않고 배포를 원하는 경우에 적합합니다.
war:inplace
target 디렉토리 뿐만 아니라 다른 디렉토리에 library와 class 파일들이 생성되도록 하는 명령입니다. 기본적으로 src/main/webapp 이 지정되어 있습니다.
원본 프로젝트 디렉토리 구조
|-- pom.xml
`-- src
`-- main
|-- java
| `-- com
| `-- example
| `-- projects
| `-- SampleAction.java
|-- resources
| `-- images
| `-- sampleimage.jpg
`-- webapp
|-- WEB-INF
| `-- web.xml
|-- index.jsp
`-- jsp
`-- websource.jsp
war:war 명령 후 구조
documentedproject-1.0-SNAPSHOT.war
|-- META-INF
| |-- MANIFEST.MF
| `-- maven
| `-- com.example.projects
| `-- documentedproject
| |-- pom.properties
| `-- pom.xml
|-- WEB-INF
| |-- classes
| | |-- com
| | | `-- example
| | | `-- projects
| | | `-- SampleAction.class
| | `-- images
| | `-- sampleimage.jpg
| `-- web.xml
|-- index.jsp
`-- jsp
`-- websource.jsp
war:exploded 명령 후 구조
documentedproject-1.0-SNAPSHOT
|-- META-INF
|-- WEB-INF
| |-- classes
| | |-- com
| | | `-- example
| | | `-- projects
| | | `-- SampleAction.class
| | `-- images
| | `-- sampleimage.jpg
| `-- web.xml
|-- index.jsp
`-- jsp
`-- websource.jsp
war:inplace 명령 후 구조
|-- pom.xml
|-- src
| `-- main
| |-- java
| | `-- com
| | `-- example
| | `-- projects
| | `-- SampleAction.java
| |-- resources
| | `-- images
| | `-- sampleimage.jpg
| `-- webapp
| |-- META-INF
| |-- WEB-INF
| | |-- classes
| | | |-- com
| | | | `-- example
| | | | `-- projects
| | | | `-- SampleAction.class
| | | `-- images
| | | `-- sampleimage.jpg
| | `-- web.xml
| |-- index.jsp
| `-- jsp
| `-- websource.jsp
`-- target
`-- classes
|-- com
| `-- example
| `-- projects
| `-- SampleAction.class
`-- images
`-- sampleimage.jpg
2. Maven-war-plugin의 파라미터
<cacheFile>
Webapp 구조 캐시를 포함하는 파일을 명시합니다.
기본 값은 ${project.build.directory}/war/work/webapp-cache.xml 입니다.
<outputDirectory>
war파일이 생성되는 디렉토리를 명시합니다.
기본 값은 ${project.build.directory} 입니다.
<warSourceDirectory>
War에 포함시키고 싶은 외부 디렉토리 하나를 명시합니다. 보통 JSP파일의 위치를 나타냅니다.
기본 값은 ${basedir}/src/main/webapp 입니다.
<webappDirectory>
빌드 결과물이 저장될 디렉토리를 명시합니다.
기본 값은 ${project.build.directory}/${project.build.fileName} 입니다.
<overlays>
여러 웹 어플리케이션에서 공통 리소스를 공유하는데 사용됩니다.
<failOnMissingWebXml>
Web.xml 파일이 없을 때, 빌드를 실패할 것인지 여부를 명시합니다.
3.0 버전 이후의 기본 값은 false입니다.
<webXml>
Web.xml의 경로를 명시합니다.
위의 파라미터들 외에도 다양한 설정이 있습니다. 더 많은 설정을 알아보고 싶으면 아래 참조를 확인해주시면 좋겠습니다.
참조: http://maven.apache.org/plugins/maven-war-plugin/war-mojo.html