Cobertura исключает неработающий в многомодульном проекте Maven 3

У меня есть мультимодульный проект Maven 3. Мы используем Cobertura в качестве инструмента покрытия кода, но тег exclude не работает. У нас есть плохие тесты из пакета, который мы унаследовали от другой команды, но должны потреблять.

Структура выглядит следующим образом:

<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, и это всегда казалось верным, но мы никогда не получаем точных отчетов.

1 ответ

Решение

Поместите конфигурацию исключения в файл pom.xml модуля N, из которого вы хотите сделать исключения:

  <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>
Другие вопросы по тегам