maven-war-plugin插件的warSourceExcludes和packagingExcludes参数的区别
项目中在打包的时候时常要忽略一些只在本地使用的文件,比如一些test文件夹或者本地配置,刚刚开始使用maven-war-plugin的warSourceExcludes和packagingExcludes这两个参数还真是搞得有点晕,多试验了几次明白了,现在分享一下我的理解。
引用官网的说明:
warSourceExcludes | String |
- |
The comma separated list of tokens to exclude when?copying the content?of the warSourceDirectory. |
packagingExcludes | String |
2.1-alpha-2 |
The comma separated list of tokens to?exclude from the WAR before packaging. This option may be used to implement?the skinny?WAR use case. |
引用我负责的一个项目对maven-war-plugin的配置:
<packagingExcludes>**/application*.properties,**/spy.properties</packagingExcludes> <warSourceExcludes>test/*,venue/**</warSourceExcludes>
声明:packagingExcludes中的*.properties文件均位于src/main/resources目录中 warSourceExcludes中的?test/*,venue/**位于src/main/webapp目录中
运行mvn package命令后结果是:
- 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 文件夹的文件
说明:
这里使用了warSourceExcludes和packagingExcludes两个参数为的就是演示一下含义,比如在打包产品的时候完全可以使用warSourceExcludes这一个参数来忽略文件,这样就可以省略packagingExcludes这个参数了