This plugin allows you to capture code coverage report from Clover. Hudson will generate the trend report of coverage.

 Configuring Clover Plugin

  1. Install the clover plugin
  2. Configure your project's build script to generate clover XML reports
  3. (Optional) configure your project's build script to generate clover HTML or PDF reports (this plugin prefers HTML reports to PDF).  The plugin will not extract any information from these reports, but will use them as a better formatted most recent coverage report when they are available.
  4. Enable the "Publish Clover Coverage Report" publisher
  5. Specify the directory where the clover.xml report is generated.
  6. (Optional) Configure the coverage metric targets to reflect your goals.

Maven Configuration (with freestyle project)

The maven-clover-plugin is one of the plugins that highlights an issue with how Maven 2 handles aggregator goals.

Hudson cannot handle maven aggregator goals with the maven2 project (alpha) project type due to how this project type calls Maven.

In order to obtain multi-module clover reports, you must therefore use the free-style software project project type.  In any case, the hudson clover plugin does not currently support the maven2 project (alpha) project type.

In order to ensure that the correct aggregated report is generated, it is necessary to invoke maven multiple times.

Short answer:

install
-Dmaven.test.failure.ignore=true
|
-Dclover.license.file=path-to-clover-license
clover:instrument
clover:aggregate
|
-Dclover.license.file=path-to-clover-license
-N
clover:aggregate
clover:clover

Maven2, Clover and Multimodule with a <packaging>ear</packaging> child module

The maven2 ear packaging will break if you use the clover goal at any time during the same invokation of maven if you ivoke the package or later phases (as it will see artifacts without a classifier and with the clover classifier, get confused and give up)

To work around this, you should configurer your root pom to include the <packaging>ear</packaging> targets only when you are not using clover... how to do this:

<project>
  ...
  <profiles>
    ...
    <profile>
      <id>running-clover</id>
      <activation>
        <property>
          <name>clover.license.file</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-clover-plugin</artifactId>
              <configuration>
                <licenseLocation>${clover.license.file}</licenseLocation>
                <generateHtml>true</generateHtml>
                <generateXml>true</generateXml>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
    <profile>
      <id>not-running-clover</id>
      <activation>
        <property>
          <name>!clover.license.file</name>
        </property>
      </activation>
      <modules>
        <module>my-ear-artifact</module>
        <!-- list any other ear child modules here -->
      </modules>
    </profile>
    ...
  </profiles>
  ...
</project>

 The above... hack... is why it is recommended to invoke maven three times.  If you don't need this hack, you could simplify down to two invocations and specify the clover license file location in the pom.xml, i.e. install clover:instrument | -N clover:aggregate clove:site