빌드 도구/Maven

maven-war-plugin

창욱씨 2020. 4. 4. 18:12
728x90

 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

728x90