Apache Maven WAR Plugin
http://maven.apache.org/plugins/maven-war-plugin/
此插件使用,在
package
phase时候,参数XXX目录和 XXX.war文件
想排除一些文件,或者加入一些文件时候,会在war插件中配置使用。例如不同环境使用的文件不一样,将一些文件不在resources目录中拷贝到war中时使用
使用中遇到的问题
:
官网中如下,不好使哦。所以我改成
<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> </resource> </webResources> </configuration>
改成:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warSourceExcludes>login.jsp</warSourceExcludes>
</configuration>
</plugin>
1. Including and Excluding Files From the WAR
<packagingIncludes> and <packagingExcludes>
打包时exclude src/main/resource/prod文件夹 和 src/main/resource/dev文件夹 排除掉。多个文件夹有逗号隔开。也可以是文件名称
packagingExcludes 默认目录是 src\main\webapp里面
<project>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<packagingExcludes>
**/prod/**,**/dev/**
</packagingExcludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
或者:
<packagingExcludes>
WEB-INF/classes/prod/**,WEB-INF/classes/dev/**,index.jsp
</packagingExcludes>
WEB-INF/classes/prod/**,WEB-INF/classes/dev/**,index.jsp
</packagingExcludes>
2. 插件的warSourceExcludes和packagingExcludes参数的区别
推荐使用warSourceExcludes代替 packagingExcludes
相同点:相对的目录都是 src\main\webapp
<packagingExcludes>
WEB-INF/classes/prod/**,WEB-INF/classes/dev/**,index.jsp
</packagingExcludes>
</packagingExcludes>
<warSourceExcludes>
WEB-INF/classes/prod/**,WEB-INF/classes/dev/**,index.jsp
</warSourceExcludes>
WEB-INF/classes/prod/**,WEB-INF/classes/dev/**,index.jsp
</warSourceExcludes>
不同点:
<packagingExcludes>**/application*.properties,**/spy.properties</packagingExcludes> <warSourceExcludes>test/*,venue/**</warSourceExcludes>
运行mvn package命令后结果是:
target/mywebapp-1.0.4 (文件夹)下面原码中存在的test和venue目录没有复制过来(warSourceExcludes忽略成功),其他的文件和目录没有变化
对于packagingExcludes的配置意思是从mywebapp-1.0.4文件夹中复制文件时忽略的文件列表,所以最后打包的war里面不包含test、venue文件夹和packagingExcludes中指定的文件
target/mywebapp-1.0.4 (文件夹)下面原码中存在的test和venue目录没有复制过来(warSourceExcludes忽略成功),其他的文件和目录没有变化
对于packagingExcludes的配置意思是从mywebapp-1.0.4文件夹中复制文件时忽略的文件列表,所以最后打包的war里面不包含test、venue文件夹和packagingExcludes中指定的文件
总结一句:
warSourceExcludes是在编译周期进行完成后从src/main/webapp目录复制文件时忽略,而packagingExcludes是在复制webapp目录完成后打包时忽略target/mywebapp-1.0.4 文件夹的文件
区别来源:
http://www.fwqtg.net/maven-war-plugin%E6%8F%92%E4%BB%B6%E7%9A%84warsourceexcludes%E5%92%8Cpackagingexcludes%E5%8F%82%E6%95%B0%E7%9A%84%E5%8C%BA%E5%88%AB.html
3. 拷贝文件
<configuration>
<webResources>
<resource>
...
</resource>
<resource>
<directory>configurations</directory>
<!-- override the destination directory for this resource -->
<targetPath>WEB-INF</targetPath>
<!-- enable filtering -->
<filtering>true</filtering>
<excludes>
<exclude>**/properties</exclude>
</excludes>
</resource>
</webResources>
</configuration>