juancn
juancn

Reputation: 2613

What is the proper way to use Cobertura with Maven 3.0.2

I have been trying unsuccessfully for the last few days to run Cobertura 2.4 with Maven 3.0.2. We have a very large project with many modules (sub-projects). What I found is that documentation is basically non-existent or plain wrong. All tutorials I was able to find don't work with Maven 3.x (they build, but Cobertura either doesn't run or cannot generate the reports).

Has anyone here been able to make it work? Any useful tips/examples? Thanks.

Upvotes: 21

Views: 32028

Answers (3)

FrVaBe
FrVaBe

Reputation: 49341

I successfully integrated Cobertura in my projects with adding this:

  <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>

If you run mvn cobertura:cobertura the reports will be generated in target\site\cobertura. See also maven cobertura plugin.


Today I analyze projects with SonarQube. It has an easy installation step (if you are not interested in using an enterprise database) and also includes a code coverage analysis (using JaCoCo) among many other metrics.

Upvotes: 23

Benny Code
Benny Code

Reputation: 54832

You can also integrate the Cobertura plugin in the <reporting> section of your 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>

If you run mvn site, then your report will be available in target/site/cobertura/index.html within the target directory of your application.

Upvotes: 5

avandeursen
avandeursen

Reputation: 8648

In maven 3.0.3 (not yet out when you asked the question), simply use maven's site plug-in and configure it such that it uses cobertura, as follows:

<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>
....

Upvotes: 7

Related Questions