Cobertura and Maven: There are TWO important things to do. Then, we’ll see about integrating Cobertura and Hudson.
First, set Cobertura as one of the reports in pom.xml:
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.2</version> <!-- use last version available -->
</plugin>
</plugins>
</reporting>
Finally, to get the actual report, you must remember to run ‘mvn site’. The reports will *not* be generated when simply running the unit tests.
For configuration, you must add a <plugin> tag in <build><plugins>; this is optional if you are only interested in Maven Site Reports. Remember: this does *not* mean that coverage analysis will be done when testing or running the code, only when running “mvn site”.
If you want the coverage reports directly under Hudson (and are not satisfied with publishing the maven site reports), things gets messy. There is a plugin for this, but I couldn’t get it to work (some people report that the current version, v0.8.4, is broken; it could also be because I’m using a Maven 2-type job under Hudson, which is not the most stable)
First, install the Cobertura-Hudson plugin.
This plugin requires XML reports to be generated by Cobertura. Looks simple enough according to the documentation.
The wiki page for the Cobertura plugin states that the configuration should be done in the <build> tag, but that didn’t work for me. In my case, I had to do it in the <reporting> tag, as follows:
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<formats>
<format>html</format>
<format>xml</format>
</formats>
</configuration>
</plugin>
</plugins>
</reporting>
That’s it from me. I hope you’ll have more luck than me with the Cobertura plugin. Anyway, don’t forget that you can always look for the report on the Maven-generated site. You can even create a Bookmark to it, since the page is stable (except when the build overrides it, of course).