Maven 2 plugin fails with cannot find symbol exception when defining two locations for source files
症状
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
C:\source\location\target\clover\src-test\com\acme\SomeClass.java:[11,35] cannot find symbol
symbol: class SomeClass
You have a Maven project that compiles and installs just fine, but when run with the Clover goals on it fails with the above error. The project is set up a little bit different, as the source is in two folders, for example: src/main/java/core, and src/main/java/gen. The maven-compiler-plugin is configured to handle this as below:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<includes>
<include>core/**</include>
<include>gen/**</include>
</includes>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
原因
Clover does not understand the above definition of source roots.
ソリューション
Maven's best practice is to use the build-helper-maven-plugin to add alternate source directories, instead of using <includes> in the maven-compiler-plugin.
Please remove the <includes> from the maven-compiler-plugin and add the following definition to your pom.xml:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/java/core</source>
<source>src/java/gen</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>