cobertura-maven-plugin无法找到我的groovy源代码

时间:2017-02-12 19:32:02

标签: maven groovy cobertura

我正在尝试使用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>

我已尝试过以下两种方法:

在这两种情况下,结果完全相同:

  

无法找到com / hal_con / scheduler / FileParser.groovy。你有没有指定源目录?

我认为需要告诉maven-cobertura-plugin在哪里找到我的常规来源,但我找不到一个例子。

1 个答案:

答案 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源。