这是参考https://jira.atlassian.com/browse/CLOV-1471上的JIRA票证
该问题类似于JIRA仪表板上发布的问题,即:
我们有几个Maven项目具有多个源目录。非默认目录是使用build-helper插件添加的。 clover2:setup目标将检测所有源文件夹,但随后将所有未生成的目录设置为maven项目上的源文件夹。由于源文件同时存在于三叶草检测到的源和原始位置中,因此会导致编译错误。
这是我们使用build-helper-maven-plugin的方式
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>add-shared-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>../SomeOtherModule1/src/main/java/com</source>
<source>../SomeOtherModule2/src/main/java/com</source>
<source>../SomeOtherModule3/src/main/java/com</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
这就是我们在构建配置文件中使用clover2插件的方式:
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>maven-clover2-plugin</artifactId>
<version>4.0.0</version>
<configuration combine.self="override">
<targetPercentage>$
{code_coverage_target}
</targetPercentage>
<licenseLocation>$
{clover_license_location}
</licenseLocation>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>instrument-test</goal>
<goal>check</goal>
<goal>clover</goal>
</goals>
</execution>
</executions>
</plugin>
如果没有三叶草插件,则编译可以正常进行。但是在添加了三叶草插件之后,我们遇到了一些错误,指出找到了重复的类。
我在这里想念什么吗?
最佳答案
我认为这是由您使用clover2:instrument而不是clover2:setup目标引起的。 clover2:instrument派生了一个自定义的构建生命周期,并且在此构建周期中,它在“验证”阶段执行检测。由于您的“添加源”目标已绑定到generate-sources阶段,因此build-helper-maven-plugin在Clover之后而不是之前运行。
我建议使用clover2:setup绑定到验证或初始化阶段(即在generate-sources之前)。