有 4 种方式使用 WAR 插件:
package
项目包类型为的阶段war
war:war
目标的调用war:exploded
目标的调用war:inplace
目标的调用注意:使用war:
目标时,假定该compile
阶段已经完成。WAR 插件不负责编译 java 源代码或复制资源。
要处理存档此版本的 Maven WAR 插件,请使用Maven Archiver 3.5.0。
要处理过滤此版本的 Maven WAR 插件,请使用Maven Filtering 3.1.1。
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:explode
可用于生成分解形式的 WAR。使用与上面相同的项目并调用:
mvn compile war:exploded
这将在target/documentedproject-1.0-SNAPSHOT
. 该目录的内容如下所示:
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
参数覆盖此默认目录。
<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</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