Sonar的最新版本2.12已集成了Jacoco插件,我想将其用于多模块项目中的代码覆盖部分。
我有这样的结构
proj.com.parent
proj.com.provider
proj,com.test
提供者项目的测试用例在测试项目中。 当我将声纳中的Code Coverage插件设置为jacoco时,它可以正常执行,但组合的代码Covergae不在DashBoard上显示。 我见过一个帖子,说一个jacoco.exec文件可以解决问题,但我无法做到。
我试图在我的pom中配置以下内容,如下所示
sonar
org.apache.maven.plugins
maven-surefire-plugin
-javaagent:${sonar.jacoco.jar}=destfile=${sonar.jacoco.reportPath}
${basedir}/code-coverage/jacoco.exec
C:\sonar-2.12\war\sonar-server\deploy\plugins\jacoco\META-INF\lib\org.jacoco.agent-0.5.3.201107060350.jar
但是在Maven命令行" mvn clean install"上,我得到此错误:
Failed to find Premain-Class manifest attribute in C:\sonar-2.12\war\sonar-server\deploy\plugins\jacoco\META-INF\lib\org.jacoco.agent-0.5.3.201107060350.jar
Error occurred during initialization of VM
agent library failed to init: instrument
有人可以提供任何帮助吗?
您指向的jar不是jar ..使用winrar提取它,您将在其中获得另一个jar。称为jacocoagent.jar,以检查是否得到了正确的jar,只需解压缩jacocoagent.jar
并查找manifest.mf,它应该具有premain类的条目。
那应该做。
我有同样的问题。在中央存储库中查看Jacoco代理工件。
有一个普通的jar工件,并且有一个带有分类器运行时的jar。您需要将"运行时"工件用作代理jar。我要做的只是下载带有Maven依赖插件的Jacoco代理运行时jar,如下所示:
org.apache.maven.plugins
maven-dependency-plugin
download-jacoco-agent
pre-integration-test
copy
org.jacoco
org.jacoco.agent
0.6.3.201306030806
runtime
${project.build.directory}
jacoco-agent.jar
然后,您只需要定义以下命令行选项:
-javaagent:${project.build.directory}/jacoco-agent.jar=destfile=${sonar.jacoco.reportPath}
也许您应该尝试将属性sonar.core.codeCoveragePlugin设置为值jacoco。 Sonar中的默认代码覆盖率工具仍然是cobertura。有关代码覆盖范围,请参见以下doco。
如果那没有帮助,我找到了以下链接(您尝试从Maven运行Jacoco):
使用Maven,Sonar和Jacoco分离代码覆盖范围
是的标记,我已经打开了您提供的链接,实际上我从同一站点获得了详细信息。 但是我不知道他们使用了哪个版本的SONAR,我的问题是运行时抛出的错误,我不确定确切的原因是什么。