使用SonarQube通过Jenkins进行的Gradle Spring Boot代码分析会引发错误。
我在Gradle春季启动项目的根目录下有我的sonar-project.properties文件,其中包含以下详细信息
sonar.projectKey=some-project-key
sonar.projectName=some-project-name
sonar.projectVersion=1.0
sonar.sources=src/main/java/
sonar.exclusions=./src/main/resources/**
sonar.language=java
sonar.java.sources=1.8
sonar.java.binaries=build/classes/java/main
在Jenkins中,“全局工具配置”下的SonarQube Scanner被配置为
Name: SonarScanner Install Automatically is checked Install from Maven Central: SonarQube Scanner 3.0.3.778
在Jenkinsfile中,阶段定义为
stage('SonarQube') {
environment {
scannerHome = tool 'SonarScanner'
}
steps {
withSonarQubeEnv('sonarqube') {
sh "${scannerHome}/bin/sonar-scanner"
}
timeout(time: 10, unit: 'MINUTES') {
waitForQualityGate abortPipeline: true
}
}
}
运行作业时,出现以下错误
INFO: JavaClasspath initialization ERROR: Invalid value for sonar.java.binaries INFO: ------------------------------------------------------------------------ INFO: EXECUTION FAILURE INFO: ------------------------------------------------------------------------ INFO: Total time: 5.890s INFO: Final Memory: 48M/120M INFO: ------------------------------------------------------------------------ ERROR: Error during SonarQube Scanner execution java.lang.IllegalStateException: No files nor directories matching 'build/classes/java/main/**'
显然是sonar.java.binaries属性引起了问题。
我已经尝试了sonar.java.binaries属性的下列值一个接一个。什么都行不通,而且每次我遇到相同的错误。
build//classes//java//main
build/classes/java/main
build/classes
*//build//classes//java//main//**
//build//classes//java//main//**
build//classes//java//main//**
build/classes/java/main/**
我已经不知所措了。如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
我已设法解决此问题。我必须在sonar-project.properties中定义属性值,如下所示。
sonar.java.binaries=build/libs
Jenkins的工作能够与SonarQube服务器通信并发布报告。