我已经搜索了与多模块maven项目和声纳相关的几个问题,但这些问题主要是关于聚合代码覆盖率指标。
我有一个由声纳分析的多模块maven项目。
如果我使用mvn sonar:sonar
直接从终端运行分析,结果分析将在设计页面中显示maven模块之间的依赖关系。
但是,如果我通过Jenkins调用sonar-runner运行分析,结果分析将错过maven模块之间的依赖关系。
这是我设置声纳参数的顶级pom的片段:
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.jdbc.url>
jdbc:mysql://myhost:3306/sonar?useUnicode=true&characterEncoding=utf8
</sonar.jdbc.url>
<sonar.jdbc.username>sonar</sonar.jdbc.username>
<sonar.jdbc.password>sonar</sonar.jdbc.password>
<sonar.host.url>http://myhost:9999</sonar.host.url>
<sonar.java.source>1.7</sonar.java.source>
<sonar.login>jenkins</sonar.login>
<sonar.password>jenkins</sonar.password>
</properties>
</profile>
在Jenkins上,我将作业配置为在构建步骤中执行clean install -DskipTests=true
,然后执行构建后操作以运行Sonar。
我正在使用Maven版本3.0.5,SonarQube版本3.7,Sonar Runner 2.3和Java 1.7.0_45。
了解我的配置中可能缺少什么?
答案 0 :(得分:1)
SonarQube Maven引导程序确实依赖于Maven来获取依赖项(在模块或外部库上)。但SonarRunner无法访问此类信息,这就是为什么当您使用SonarRunner分析项目时,您无法获得有关外部依赖项的任何信息。
答案 1 :(得分:0)
好的,如果您使用的是Jenkins,则需要安装Sonar插件并设置参数。然后,您需要创建一个作业并运行maven目标:
clean install
之后,标记Sonar checkbok。运行你的工作,你应该看到你的代码覆盖率。
PS:如果你正在使用模块,那么你必须拥有所有模块的pom-root。