首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在Apache Tika的POM文件中添加Jacoco Maven插件,以获得代码覆盖率。但是我在这样做的时候遇到了一些问题

我在Apache Tika的POM文件中添加Jacoco Maven插件,以获得代码覆盖率。但是我在这样做的时候遇到了一些问题
EN

Stack Overflow用户
提问于 2019-06-11 04:35:21
回答 1查看 325关注 0票数 0

Apache Tika项目有一个根目录,其中存在一个pom.xml。在根目录中有子模块和名为"Tika-Parent“的模块。在父模块中还有一个pom.xml文件。

现在我正在向Tika添加jacoco Maven插件以获得代码覆盖率,但我面临着一些问题,因为当我将Jacoco Maven插件添加到根目录中的Pom.xml中时。它成功构建,但给出一个错误:“由于缺少执行数据file:C:\Users\adity\IdeaProjects\tika-1.20\target\jacoco.exec”,正在跳过JaCoCo执行

我尝试将JaCOCO插件添加到这两个pom.xml文件中,一起添加,也尝试逐个添加,但都没有结果。

此外,当我在根目录中的pom.xml上执行Maven Test时,它成功构建并运行了所有测试。

但是当我在Tika-parent的pom.xml上执行Maven测试时,它没有运行任何测试,但构建成功了。

我在根目录下附加了Pom.xml,以及根目录内Tika-parent模块的pom.xml。

我使用的是IntelliJ社区版(网站上的最新版本)。Java版本- JDK 8,Maven版本3。

根目录pom.xml中包含THese详细信息

代码语言:javascript
复制
<modules>
  <module>tika-parent</module>
  <module>tika-core</module>
  <module>tika-parsers</module>  
  <module>tika-bundle</module>
  <module>tika-xmp</module>
  <module>tika-serialization</module>
  <module>tika-batch</module>    
  <module>tika-app</module>
  <module>tika-server</module>
  <module>tika-translate</module>
  <module>tika-langdetect</module>  
  <module>tika-example</module>
  <module>tika-java7</module>
  <module>tika-eval</module>
  <module>tika-dl</module>
  <module>tika-nlp</module>
</modules>

这些是属性

代码语言:javascript
复制
<jacoco.version>0.7.5.201505241946</jacoco.version>
<junit.version>4.12</junit.version>
<junit.platform.version>1.3.1</junit.platform.version>

<maven.antrun.version>1.8</maven.antrun.version>
<maven.assembly.version>3.1.0</maven.assembly.version>
<maven.bundle.version>4.0.0</maven.bundle.version>
<maven.failsafe.version>2.22.1</maven.failsafe.version>
<maven.javadoc.version>3.0.1</maven.javadoc.version>
<maven.scr.version>1.7.4</maven.scr.version>
<maven.surefire.version>2.22.1</maven.surefire.version>
<maven.shade.version>3.2.0</maven.shade.version>
<rat.version>0.12</rat.version>

这些都是依赖项

代码语言:javascript
复制
<dependencies>
<dependency>
  <groupId>org.junit.platform</groupId>
  <artifactId>junit-platform-launcher</artifactId>
  <version>${junit.platform.version}</version>
</dependency>

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>${junit.version}</version>

</dependency>

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-api</artifactId>
  <version>5.3.1</version>
  <scope>test</scope>

</dependency>

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-params</artifactId>
  <version>5.3.1</version>
  <scope>test</scope>
</dependency>



<dependency>

  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter</artifactId>
  <version>5.4.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-engine</artifactId>
  <version>5.3.1</version>
  <scope>test</scope>
</dependency>


<dependency>
  <groupId>org.junit-pioneer</groupId>
  <artifactId>junit-pioneer</artifactId>
  <version>0.3.0</version>
  <scope>test</scope>
</dependency>
</dependencies>

下面是Build.Plugins中的所有插件。

这是JACOCO插件

代码语言:javascript
复制
<plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>${jacoco.version}</version>
    <executions>
      <execution>
        <id>prepare-agent</id>
        <goals>
          <goal>prepare-agent</goal>
        </goals>
      </execution>
      <execution>
        <id>report</id>
        <phase>prepare-package</phase>
        <goals>
          <goal>report</goal>
        </goals>
      </execution>
      <execution>
        <id>post-unit-test</id>
        <phase>test</phase>
        <goals>
          <goal>report</goal>
        </goals>
        <configuration>
       <dataFile>target/jacoco.exec</dataFile>
          <outputDirectory>target/jacoco-ut</outputDirectory>
        </configuration>
      </execution>
    </executions>
  </plugin>

这就是Surefire插件

代码语言:javascript
复制
<plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
          <reuseForks>false</reuseForks>
          <forkCount>1</forkCount>
      </configuration>
</plugin>

THis是apache Rat插件

代码语言:javascript
复制
<plugin>
    <groupId>org.apache.rat</groupId>
    <artifactId>apache-rat-plugin</artifactId>
    <version>${rat.version}</version>
    <configuration>
      <excludes>
        <exclude>CHANGES.txt</exclude>
      </excludes>
    </configuration>
  </plugin>

Rest此pom.xml中没有其他插件

下面是根目录中Iika- pom.xml模块的父模块。

这些是属性。

代码语言:javascript
复制
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>${project.build.sourceEncoding} 
</project.reporting.outputEncoding>


<!-- plugin versions -->
<jacoco.version>0.7.5.201505241946</jacoco.version>
<junit.version>4.12</junit.version>
<junit.platform.version>1.3.1</junit.platform.version>



<forbiddenapis.version>2.6</forbiddenapis.version>
<groovy.maven.version>2.0</groovy.maven.version>
<maven.antrun.version>1.8</maven.antrun.version>
<maven.assembly.version>3.1.0</maven.assembly.version>
<maven.bundle.version>4.0.0</maven.bundle.version>
<maven.failsafe.version>2.22.1</maven.failsafe.version>
<maven.javadoc.version>3.0.1</maven.javadoc.version>
<maven.scr.version>1.7.4</maven.scr.version>
<maven.surefire.version>2.22.1</maven.surefire.version>
<maven.shade.version>3.2.0</maven.shade.version>
<rat.version>0.12</rat.version>


<!-- NOTE: sync tukaani version with commons-compress in tika-parsers -->


<poi.version>4.0.1</poi.version>
<commons.compress.version>1.18</commons.compress.version>
<commons.io.version>2.6</commons.io.version>
<commons.lang3.version>3.8.1</commons.lang3.version>
<gson.version>2.8.5</gson.version>
<osgi.core.version>6.0.0</osgi.core.version>

<cxf.version>3.2.7</cxf.version>
<slf4j.version>1.7.25</slf4j.version>
<jackson.version>2.9.7</jackson.version>


<!-- when this is next upgraded, see if we can get rid of
     javax.activation dependency in tika-server -->


<jaxb.version>2.3.1</jaxb.version>
<cli.version>1.4</cli.version>
<lucene.version>7.5.0</lucene.version>
<mockito.version>2.23.4</mockito.version>

此pom.xml中的其他依赖项( rest全部与之前的pom相同)

代码语言:javascript
复制
<dependency>
    <groupId>biz.aQute</groupId>
    <artifactId>bndlib</artifactId>
    <version>1.50.0</version>
  </dependency>
  <dependency>
    <groupId>org.apache.felix</groupId>
    <artifactId>org.apache.felix.scr.annotations</artifactId>
    <version>1.12.0</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${slf4j.version}</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>${slf4j.version}</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>${slf4j.version}</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>${slf4j.version}</version>
  </dependency>
  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jul-to-slf4j</artifactId>
    <version>${slf4j.version}</version>
  </dependency>

下面是Build.plugins中的所有额外插件(其余都与早期的pom.xml相同)

代码语言:javascript
复制
<plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
      <source>${maven.compiler.source}</source>
      <target>${maven.compiler.target}</target>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>versions-maven-plugin</artifactId>
    <version>2.7</version>
    <configuration>
      <generateBackupPoms>false</generateBackupPoms>
    </configuration>
  </plugin>
  <plugin>
    <groupId>de.thetaphi</groupId>
    <artifactId>forbiddenapis</artifactId>
    <!-- if this version contains commons-io 2.6, remove hard-coded commons-io version below -->
    <version>${forbiddenapis.version}</version>
    <configuration>
      <targetVersion>${maven.compiler.target}</targetVersion>
      <failOnUnresolvableSignatures>false</failOnUnresolvableSignatures>
      <failOnUnsupportedJava>false</failOnUnsupportedJava>
      <bundledSignatures>
        <bundledSignature>jdk-unsafe</bundledSignature>
        <bundledSignature>jdk-deprecated</bundledSignature>
        <bundledSignature>jdk-non-portable</bundledSignature>
        <bundledSignature>jdk-internal</bundledSignature>
        <bundledSignature>commons-io-unsafe-${commons.io.version}</bundledSignature>
      </bundledSignatures>
    </configuration>
    <executions>
      <execution>
        <goals>
          <goal>check</goal>
          <goal>testCheck</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  <plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>${maven.bundle.version}</version>
  </plugin>


  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven.surefire.version}</version> <!-- versions greater than this don't like System.exit calls in tika-batch -->
    <configuration>
      <argLine>-Xmx3072m -Duser.timezone=UTC</argLine>
    </configuration>
  </plugin>




  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>${maven.shade.version}</version>
  </plugin>



  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.5.3</version>
    <dependencies>
     <dependency>
       <groupId>org.apache.maven.scm</groupId>
       <artifactId>maven-scm-provider-gitexe</artifactId>
       <version>1.9.5</version>
     </dependency>
   </dependencies>
  </plugin>



  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-enforcer-plugin</artifactId>
    <version>3.0.0-M2</version>
    <executions>
      <execution>
        <id>enforce</id>
        <configuration>
          <rules>
            <dependencyConvergence />
            <requireMavenVersion>
              <version>3.1</version>
            </requireMavenVersion>
          </rules>
        </configuration>
        <goals>
          <goal>enforce</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

Jacoco插件也出现在这个pom文件中,它与之前的pom文件相同。

我试着把它放在这个文件中并构建它。不管用。THen尝试将jacoco插件放入根pom文件中,但不起作用。给出了相同的上述错误。

请帮帮我!!

EN

回答 1

Stack Overflow用户

发布于 2019-06-11 07:13:50

在我的代码中,我在根pom中的pluginManagement标签下插入了jacoco插件:

代码语言:javascript
复制
<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.7.9</version>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>default-report</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</pluginManagement>

在我进行单元测试的每个子模块中,我插入了以下pom.xml配置:

代码语言:javascript
复制
<build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

你必须只在有单元测试的java模块中启用jacoco插件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56533182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档