使用maven-war-plugin 打包时排除不需要的文件

1、过滤整个测试代码,可以直接在命令行上指定

mvn clean install -Dmaven.test.skip=true

提示:以上为举例,具体的构建阶段可以自定义,其中maven.test.skip为是否进行测试。

或者

mvn clean install -DskipTests

还可以直接在pom.xml文件上指定,比如使用maven-surefire-plugin时的配置

复制代码
<plugin>  
    <groupId>org.apache.maven.plugins</groupId>  
    <artifactId>maven-surefire-plugin</artifactId>  
    <version>2.20</version>  
    <configuration>  
        <skipTests>true</skipTests>  
    </configuration>  
</plugin>  
复制代码

提示:skipTests当为true为测试,反之同理。如果是使用插件,那么要把依赖的jar包去除。

通过<properties>节点配置属性

<properties>  
    <skipTests>true</skipTests>  
</properties>

或者

<properties>  
    <maven.test.skip>true</maven.test.skip>  
</properties>  

2、如果是指定特定的特定的测试类时,此时需要使用maven-surefire-plugin这个插件,因为默认测试使用的就是这个插件进行关联。

官网:http://maven.apache.org/components/surefire/maven-surefire-plugin/

如下pom.xml,指定了测试类及排除某些类

复制代码
...
<
build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20</version> <configuration> <!-- 包含 --> <includes> <include>**/*Tests.java</include> </includes> <!-- 排除 --> <excludes> <exclude>**/Abstract*.java</exclude> </excludes> </configuration> </plugin> </plugins> </build>
...
复制代码

同样,如果不想指定以上的写法,可以直接在命令行上指定测试类

mvn test -Dtest=[ClassName]

提示:通过命令行就不需要配置pom.xml

还可以直接指定某个测试类的指定方法(注意:插件要2.8以上,所以还必须指定pom.xml的版本)

mvn test -Dtest=[ClassName]#[MethodName]
[MethodName]为要运行的方法名,支持*通配符,范例:
mvn test -Dtest=MyClassTest#test1
mvn test -Dtest=MyClassTest#*test*


maven-war-plugin插件的warSourceExcludes和packagingExcludes参数的区别

项目中在打包的时候时常要忽略一些只在本地使用的文件,比如一些test文件夹或者本地配置,刚刚开始使用maven-war-plugin的warSourceExcludes和packagingExcludes这两个参数还真是搞得有点晕,多试验了几次明白了,现在分享一下我的理解。 

引用我负责的一个项目对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这个参数了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值