9

我试图让 Jenkins 作为构建后的步骤运行 Sonar。

Jenkins 运行 SonarRunner [1] 但这失败了:

ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: You must define the following mandatory properties for 'Unknown': sonar.projectKey, sonar.projectName, sonar.projectVersion, sonar.sources

如果我运行mvn sonar:sonar[2] ,它可以正常工作。听起来 SonarRunner 几乎忽略了 pom.xml。如何让 SonarRunner 从 Maven 获取这些属性?


[1]/Users/builds/.jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Default_Sonar_Runner/bin/sonar-runner -Dsonar.jdbc.url=jdbc:h2:tcp://myServer:1009/sonar -Dsonar.host.url=http://myServer/sonar/ -Dsonar.projectBaseDir=/Users/builds/.jenkins/workspace/myProject

[2]mvn sonar:sonar -Dsonar.jdbc.url=jdbc:h2:tcp://myServer:1009/sonar -Dsonar.host.url=http://myServer/sonar/ -Dsonar.projectBaseDir=/Users/builds/.jenkins/workspace/myProject

4

4 回答 4

19

浪费一个晚上的好方法...

根据这个Sonar Runner 不适用于 Maven 项目。事实证明,您应该在“构建后操作”(而不是“构建后步骤”)下查看“声纳”。请参阅此处了解更多信息。

于 2013-09-13T06:21:30.750 回答
1

方法 1: 如果您在 Jenkins 中安装了扫描仪,则只需在您的作业中的此位置添加以下内容
Post Steps -> Execute SonarQube Scanner -> Analysis properties

sonar.projectKey=myProject1
sonar.sources=.

方法 2: 另一种替代方法是使用已弃用的方法,该方法仍然可以正常工作 构建后操作 -> 使用 Maven 进行 SonarQube 分析

方法3: 构建->目标和选项->“输入以下脚本” -Dmaven.test.skip=true install sonar:sonar -Dsonar.forceAnalysis=true -Dsonar.host.url= http://localhost:9000/ -Dsonar.branch=my-branch-1

于 2017-02-04T15:35:39.103 回答
0

尝试以下配置sonar-scanner.properties

sonar.host.url=http://localhost:9000
sonar.projectKey=<your project package>
sonar.projectName=<your project name with absolute path>
sonar.projectVersion=1.0
sonar.sources=src/main/java/
sonar.language=java
sonar.java.binaries=target/classes
于 2019-06-14T06:16:50.220 回答
0

有一些 Maven GAV 信息数据映射到 Jenkins 变量中,看看这个线程:Automatically derived required SonarQube properties from pom file in Jenkins

于 2017-03-06T20:37:36.253 回答