Каков правильный способ использования Cobertura с Maven 3.0.2
Я безуспешно пытался в течение последних нескольких дней запустить Cobertura 2.4 с Maven 3.0.2. У нас очень большой проект со многими модулями (подпроекты).
Я обнаружил, что документация в основном несуществует или просто ошибочна. Все обучающие программы, которые я смог найти, не работают с Maven 3.x(они строятся, но Cobertura либо не запускает, либо не может генерировать отчеты).
Кто-нибудь здесь смог заставить его работать? Какие-нибудь полезные советы/примеры?
Спасибо.
Ответы
Ответ 1
Я успешно интегрировал Cobertura в свои проекты, добавив следующее:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
<configuration>
<instrumentation>
<includes>
<include>foo/bar/**/*.class</include>
</includes>
</instrumentation>
</configuration>
<executions>
<execution>
<id>clean</id>
<phase>pre-site</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
<execution>
<id>instrument</id>
<phase>site</phase>
<goals>
<goal>instrument</goal>
<goal>cobertura</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<!-- use mvn cobertura:cobertura to generate cobertura reports -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.4</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
</plugins>
</reporting>
Если вы запустите mvn cobertura:cobertura
, отчеты будут сгенерированы в target\site\cobertura
. См. Также плагин maven cobertura.
Сегодня я анализирую проекты с SonarQube. Он имеет легкий шаг установки (если вы не заинтересованы в использовании базы данных предприятия), а также включает в себя анализ покрытия кода (с помощью JaCoCo) среди многих других показателей.
Ответ 2
В maven 3.0.3 (еще не заданный вопрос) просто используйте подключаемый модуль maven и настройте его таким образом, чтобы он использовал cobertura, как показано ниже:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.0</version>
<configuration>
<reportPlugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
</reportPlugins>
</configuration>
</plugin>
....
Ответ 3
Вы также можете интегрировать плагин Cobertura в разделе <reporting>
вашего webapp:
<reporting>
<outputDirectory>${project.build.directory}/site</outputDirectory>
<plugins>
<!-- Maven Project Info Reports Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>2.7</version>
<configuration>
<dependencyLocationsEnabled>false</dependencyLocationsEnabled>
</configuration>
</plugin>
<!-- Cobertura Code Coverage Plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
<instrumentation>
<ignoreTrivial>true</ignoreTrivial>
</instrumentation>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
</plugins>
</reporting>
Если вы запустите mvn site
, ваш отчет будет доступен в target/site/cobertura/index.html
в целевом каталоге вашего приложения.