我试图让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
答案 0 :(得分:19)
浪费一个晚上真好的方式......
根据this Sonar Runner不适用于Maven项目。事实证明你应该看看“后建立行动”(而不是“建设后步骤”),你会发现“声纳”。有关详细信息,请参阅here。
答案 1 :(得分:0)
方法1:
如果您在Jenkins中安装了扫描仪,则只需添加以下内容即可
在你工作的这个位置
后续步骤 - >执行SonarQube扫描仪 - >分析属性
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
答案 2 :(得分:0)
有一些Maven GAV信息数据映射到Jenkins变量,请看这个帖子:Automatically derive mandatory SonarQube properties from pom file in Jenkins
答案 3 :(得分: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