我有一个多模块 Maven 3 项目。我们使用 Cobertura 作为我们的代码覆盖工具,但是 excludes 标签不起作用。我们从另一个团队继承的包中有一些不好的测试,但需要使用。
结构如下:
<module1>
.../com/aaaa/...
<module2>
.../com/aaaa/...
<module3>
.../com/aaaa/...
...
<moduleN>
packages with .../com/xx/... WE WANT TO EXCLUDE
pacakges with .../com/aaaa/... WE WANT TO STILL INCLUDE
parent-pom.xml
我们的父 POM 配置如下:
<build>
...
<plugins>
<other plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
<aggregate>true</aggregate>
<outputDirectory>coverageReports</outputDirectory>
<instrumentation>
<excludes>
<exclude>**/com/xx/**/*</exclude>
</excludes>
</instrumentation>
/configuration>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
<aggregate>true</aggregate>
<outputDirectory>coverageReports</outputDirectory>
</configuration>
</plugin>
</plugins>
</reporting>
我尝试了很多不同的配置,包括:
- 排除 test/com/xx 文件
- 添加排除模式以忽略
- 在报告和构建部分设置排除
- 排除文件模式的多种排列,包括更隐式
有什么想法吗?我让其他一些构建工程师查看了我的各种 POM 配置,它似乎总是有效的,但我们从来没有得到准确的报告。