此插件能够收集web应用所有的依赖,类和资源文件,然后把它们打包归档
使用
这里有四种方式来使用
- 在package阶段使用,同时项目打包的类型为war
- war:war目标调用
- war:exploded目标调用
- war:inplace目标调用
注意:当使用war:目标时,有个前提是编译阶段已经完成,因为本身不会编译java代码和复制资源文件
在package阶段使用,同时项目打包的类型为war/war:war目标调用
这是最常用的使用方式,为了说明,下面贴出pom.xml
<project> ... <groupId>com.example.projects</groupId> <artifactId>documentedproject</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>Documented Project</name> <url>http://example.com</url> ... </project>
项目的结构看起来像这样
|-- pom.xml `-- src `-- main |-- java | `-- com | `-- example | `-- projects | `-- SampleAction.java |-- resources | `-- images | `-- sampleimage.jpg `-- webapp |-- WEB-INF | `-- web.xml |-- index.jsp `-- jsp `-- websource.jsp
调用
mvn package
或者
mvn compile war:war
将会生成war在 target/documentedproject-1.0-SNAPSHOT.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目标调用
在开发阶段为了加快测试, war:exploded可以生成已经展开(解压)的WAR,下面是调用的方式
mvn compile war:exploded
将会在 target/documentedproject-1.0-SNAPSHOT生成带版本的展开(解压)的WAR文件,.目录的内容看起来像这样。
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默认目录是 target/<finalName>,这个 finalName通常的形式是 <artifactId>-<version>。可以修改 webappDirectory 参数来覆盖WAR默认目录
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.0.0</version> <configuration> <webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory> </configuration> </plugin> </plugins> </build> ... </project>
war:inplace目标调用
war:exploded的变化是 war:inplace。当用 war:inplace时,展开(解压)的WAR目录是在 webapp中,默认是 src/main/webapp。调用方式如下:
mvn compile 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
参考链接
http://maven.apache.org/plugins/maven-war-plugin/index.html