我正在尝试使用apache-aven为我的Java / Groovy项目生成代码覆盖率报告。附件是pom文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hal_con</groupId>
<artifactId>scheduler</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.codehaus.groovy/groovy-all -->
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.gmaven</groupId>
<artifactId>gmaven-plugin</artifactId>
<version>1.5</version>
<configuration>
<providerSelection>1.8</providerSelection>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<reporting>
<plugins>
<plugin>
<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/cobertura-maven-plugin -->
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.7</version>
</plugin>
</plugins>
</reporting>
</project>
我已尝试过以下两种方法:
按照以下建议添加maven-source-plugin:Maven + Cobertura : Unable to locate [Your Class]. Have you specified the source directory?
按照以下建议添加jxr-maven-plugin: maven-cobertura-plugion does not show the sources
在这两种情况下,结果完全相同:
无法找到com / hal_con / scheduler / FileParser.groovy。你有没有指定源目录?
我认为需要告诉maven-cobertura-plugin在哪里找到我的常规来源,但我找不到一个例子。
答案 0 :(得分:2)
Cobertura Maven插件没有提供自定义源位置的方法。默认情况下,它会查看Maven标准文件夹,即src/main/java
。由于您的Groovy类位于src/main/groovy
内,因此找不到它们。
根据您的项目,有两种解决方案:
借助build-helper-maven-plugin:add-source
Mojo:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/main/groovy</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
如果项目是混合的Java / Groovy项目,这很有用,因为您可以保留Maven默认值,并添加Groovy特定文件夹。
使用
覆盖Maven的the source directory<build>
<sourceDirectory>src/main/groovy</sourceDirectory>
<!-- rest of build configuration -->
</build>
如果项目是纯Groovy项目,没有任何源Java文件,这将很方便。
通过这两项更改中的任何一项,运行mvn clean site
将生成一份Cobertura报告,其中将正确找到Groovy源。