maven-war-plugin用来打包web项目的依赖、类和资源。
参考Apache官方介绍:https://maven.apache.org/plugins/maven-war-plugin/
本文参考3W学习方法来叙述内容。
一、What
1、maven-war-plugin的官方介绍?
WAR 插件负责收集 Web 应用程序的所有工件依赖项、类和资源,并将它们打包到 Web 应用程序存档中。
2、maven-war-plugin是打war包必须安装的吗?
war插件非maven默认安装的插件,当需要为web项目打war包时,可选择安装该插件。
二、Why
1、war插件的功能?
- war:war是在打包阶段为打包类型为war的项目调用的默认目标。它构建一个WAR文件。
- war:exploded通常用于在开发阶段通过在指定目录中创建一个支持热部署的 webapp 来加速测试。
- war:inplace war:explode 的另一种变体,其中 webapp 生成在 web 应用程序源目录中,默认情况下是src/main/webapp。
三、How
1、有哪些常用功能的使用示例?
- 【DONE:80%】添加和过滤外部 Web 资源
- 【TODO】WAR 清单自定义
- 【TODO】快速测试 Jetty 插件
- 【TODO】创建瘦身战争
- 【TODO】在 WAR 中包含和排除文件
- 【TODO】使用文件名映射
2、添加和过滤外部 Web 资源
所有 Maven 项目的默认资源目录是src/main/resources,它将被打包至在 WAR中的target/classes和WEB-INF/classes中。目录结构将在此过程中保留。
2.1、WAR 插件通过webResources参数包含在默认资源目录中找不到的资源。
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
<configuration>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>resource2</directory>
</resource>
</webResources>
</configuration>
</plugin>
</plugins>
</build>
...
</project>
2.2、WAR 插件通过webResources参数,包含/排除资源
...
<configuration>
<webResources>
<resource>
<!-- this is relative to the pom.xml directory -->
<directory>resource2</directory>
<!-- the list has a default value of ** -->
<includes>
<include>**/*.jpg</include>
</includes>
<!-- there's no default value for this -->
<excludes>
<exclude>**/image2</exclude>
</excludes>
</resource>
</webResources>
</configuration>
...
PS:混合包含和排除时要小心,排除将具有更高的优先级。如果资源与两者都匹配,则包含不能覆盖排除。
2.3、WAR 插件通过webResources参数,过滤资源(暂不常用,先略过)
2.4、WAR 插件通过webResources参数,覆盖默认目标目录
默认情况下,Web 资源被复制到 WAR 的根目录,如前面的示例所示。要覆盖默认目标目录,请指定目标路径。
...
<configuration>
<webResources>
<resource>
...
</resource>
<resource>
<directory>configurations</directory>
<!-- override the destination directory for this resource -->
<targetPath>WEB-INF</targetPath>
</resource>
</webResources>
</configuration>
...