Author: vmassol
Date: Sun Jan 8 10:21:40 2006
New Revision: 367064
URL: http://svn.apache.org/viewcvs?rev=367064&view=rev
Log:
MCLOVER-16: Using Clover with projects that require class post-processing
I still need to write a test to prove it works though...
Modified:
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java
Modified:
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java
URL:
http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java?rev=367064&r1=367063&r2=367064&view=diff
==============================================================================
---
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java
(original)
+++
maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverInstrumentMojo.java
Sun Jan 8 10:21:40 2006
@@ -92,8 +92,8 @@
init();
registerLicenseFile();
instrumentSources();
- addGeneratedSourcesToCompileRoots();
addCloverDependencyToCompileClasspath();
+ redirectSourceDirectories();
redirectOutputDirectories();
}
}
@@ -141,16 +141,29 @@
this.project.getBuild().setTestOutputDirectory(
new File( this.cloverOutputDirectory, "test-classes" ).getPath() );
}
-
- /**
- * @todo handle multiple source roots. At the moment only the first source
root is instrumented
- */
- private void addGeneratedSourcesToCompileRoots()
+
+ private void redirectSourceDirectories()
{
- this.project.getCompileSourceRoots().remove( 0 );
- this.project.addCompileSourceRoot( this.cloverOutputSourceDirectory );
- }
+ String oldSourceDirectory =
this.project.getBuild().getSourceDirectory();
+ this.project.getBuild().setSourceDirectory(
this.cloverOutputSourceDirectory );
+
+ // Maven2 limitation: changing the source directory doesn't change the
compile source roots
+ List sourceRoots = this.project.getCompileSourceRoots();
+ for (int i = 0; i < sourceRoots.size(); i++)
+ {
+ String sourceRoot = (String)
this.project.getCompileSourceRoots().get( i );
+ if (sourceRoot.equals(oldSourceDirectory))
+ {
+ this.project.getCompileSourceRoots().remove( i );
+
+ // Note: Ideally we should add the new compile source root at
the same place as the
+ // one we're removing but there's no API for this...
+ this.project.addCompileSourceRoot(
this.project.getBuild().getSourceDirectory() );
+ }
+ }
+ }
+
private void addCloverDependencyToCompileClasspath()
throws MojoExecutionException
{