WAR插件负责收集Web应用程序的所有工件依赖、类和资源,并将它们打包成Web应用程序的存档。
war:war是在打包阶段调用的默认目标,用于打包类型为war的项目。它构建了一个WAR文件。
war:exploded 通常用于在开发阶段通过在指定的目录中创建一个exploded的Web应用来加速测试。
war:inplace是war:explode的另一个变体,webapp被生成在web应用的源目录下,默认情况下是src/main/webapp。
有4种方法来使用WAR插件。
war:exploded goal
war:inplace goal
这是使用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
## 3.2 Invocation of war:exploded goal
为了加快开发阶段的测试,可以使用war:explode来生成explode WAR。使用与上述相同的项目并调用。
mvn compile war:exploded
这将在target/documentedproject-1.0-SNAPSHOT中生成一个explode 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
explode WAR的默认目录是target/。最终名称通常是<*artifactId>-*的形式。这个默认目录可以通过指定webappDirectory参数来覆盖。
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<webappDirectory>/sample/servlet/container/deploy/directory</webappDirectory>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
war:exploded的另一个变化是war:inplace。通过war:inplace,explode 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
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>resource2</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
为 WAR 生成清单classpath与为JAR生成清单classpath类似,但有几个细微的差别,因为您通常不希望清单classpath和WEB-INF/lib目录中都有JAR。自定义WAR插件的存档器。
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
...
</plugins>
</build>
...
</project>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
在这个快速指南中,我们介绍了War插件,并给出了使用和定制的说明。此外,我们还看到了不同的插件目标和它们的用法。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javaguides.net/2018/06/apache-maven-war-plugin.html
内容来源于网络,如有侵权,请联系作者删除!