【问题标题】:Configure jacoco agent for sonar2.12 (Multi Module maven)为sonar2.12(多模块maven)配置jacoco代理
【发布时间】:2012-02-15 15:37:30
【问题描述】:

Sonar 最新版本 2.12 集成了 Jacoco 插件,我想在多模块项目中将它用于我的代码覆盖部分。

我有这样的结构

proj.com.parent
   proj.com.provider
   proj,com.test

提供者项目的测试用例在测试项目中。当我将声纳中的代码覆盖率插件设置为 jacoco 时,它执行得很好,但组合代码覆盖率没有显示在仪表板上。我看过一个帖子说单个 jacoco.exec 文件可以解决问题,但我无法这样做。

我尝试在我的 pom 中配置如下

<profile>
        <id>sonar</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                          <argLine>-javaagent:${sonar.jacoco.jar}=destfile=${sonar.jacoco.reportPath}</argLine> 
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <properties>
            <sonar.jacoco.reportPath>${basedir}/code-coverage/jacoco.exec</sonar.jacoco.reportPath>
            <sonar.jacoco.jar> C:\sonar-2.12\war\sonar-server\deploy\plugins\jacoco\META-INF\lib\org.jacoco.agent-0.5.3.201107060350.jar</sonar.jacoco.jar>
        </properties>

但是在 maven 命令行“mvn clean install”上我得到了这个错误:

未能在 C:\sonar-2.12\war\sonar-server\deploy\plugins\jacoco\META-INF\lib\org.jacoco.agent-0.5.3.201107060350.jar 中找到 Premain-Class 清单属性 初始化虚拟机时出错 代理库无法初始化:仪器

任何人都可以提供任何帮助吗?

【问题讨论】:

    标签: maven jacoco


    【解决方案1】:

    也许您应该尝试将属性 sonar.core.codeCoveragePlugin 设置为值 jacoco。 Sonar 中的默认代码覆盖工具仍然是 cobertura。请参阅code coverage 上的以下文档。

    如果这没有帮助,我找到了以下链接(您尝试从 Maven 运行 Jacoco):

    【讨论】:

    • 是的,马克,我已经访问了您提供的链接,事实上我从同一个站点获得了详细信息。但我不知道他们使用的是哪个版本的 SONAR,我的问题是运行时引发的错误,我不确定确切原因是什么。
    【解决方案2】:

    您指向的 jar 不是使用 winrar 提取的 jar,您将在其中得到另一个 jar。调用 jacocoagent.jar 来检查你是否得到了正确的 jar,只需提取 jacocoagent.jar 并查找 manifest.mf,它应该有一个 premain 类的条目。

    应该这样做。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。看看Jacoco agent artifacts at the central repository.

      有一个普通的 jar 工件,还有一个带有分类器运行时的 jar。您需要将“运行时”工件用作代理 jar。我做什么,我只需下载带有 maven 依赖插件的 Jacoco 代理运行时 jar,如下所示:

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <executions>
              <execution>
                  <id>download-jacoco-agent</id>
                  <phase>pre-integration-test</phase>
                  <goals>
                      <goal>copy</goal>
                  </goals>
                  <configuration>
                      <artifactItems>
                          <artifactItem>
                              <groupId>org.jacoco</groupId>
                              <artifactId>org.jacoco.agent</artifactId>
                              <version>0.6.3.201306030806</version>
                              <classifier>runtime</classifier>
                              <outputDirectory>${project.build.directory}</outputDirectory>
                              <destFileName>jacoco-agent.jar</destFileName>
                          </artifactItem>
                      </artifactItems>
                  </configuration>
              </execution>
          </executions>
      </plugin>
      

      那么你只需要定义如下命令行选项:

      <argLine>-javaagent:${project.build.directory}/jacoco-agent.jar=destfile=${sonar.jacoco.reportPath}</argLine> 
      

      【讨论】:

        猜你喜欢
        • 2017-01-30
        • 2013-03-16
        • 1970-01-01
        • 2019-05-05
        • 2014-10-03
        • 2012-09-03
        • 2015-12-25
        • 2012-10-13
        • 2017-09-21
        相关资源
        最近更新 更多