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>
Я пробовал много разных конфигураций, в том числе:
- Исключая также файлы test/com/xx
- Добавление шаблона исключения для игнорирования
- Установка исключить в разделе отчетности и сборки
- Несколько перестановок шаблона исключаемого файла, в том числе более неявный
Какие-нибудь мысли? У меня было несколько других инженеров по сборке, которые смотрели на мои различные конфигурации 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>