0

我有一个多模块 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>

我尝试了很多不同的配置,包括:

  1. 排除 test/com/xx 文件
  2. 添加排除模式以忽略
  3. 在报告和构建部分设置排除
  4. 排除文件模式的多种排列,包括更隐式

有什么想法吗?我让其他一些构建工程师查看了我的各种 POM 配置,它似乎总是有效的,但我们从来没有得到准确的报告。

4

1 回答 1

2

将排除配置放入要从以下位置进行排除的 moduleN 的 pom.xml 文件中:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>cobertura-maven-plugin</artifactId>
    <version>2.6</version>
    <configuration>
      <instrumentation>
        <excludes>
          <exclude>com/aaa/**/*.class</exclude>
          <exclude>com/xxx/**/*.class</exclude>
        </excludes>
      </instrumentation>
    </configuration>
  </plugin>
于 2014-06-06T20:39:47.087 回答