我们有一个多项目gradle构建,它将项目组织到目录中。例如:
root
+--Libraries
+-- Project1
+-- Project2
+--Tools
+-- Project3
+-- Project4
由于SonarRunner插件已被弃用,我们尝试使用官方SonarQube plugin for gradle。使用的gradle版本是2.10。
由于我们的项目结构,项目名称存在问题:SonarQube插件接收项目名称“Libraries \ Project1”。 “\”是项目名称的非法字符。
以前,对于SonarRunner,通过覆盖ProjectKey属性来解决问题:
// project specific sonar configuration
gradle.projectsEvaluated {
subprojects {
sonarRunner {
sonarProperties {
def projectKey = "$project.group:$project.name".replaceAll('/', '-')
property 'sonar.projectKey', projectKey
}
}
}
}
为SonarQube尝试的等价物是
// project specific sonar configuration
gradle.projectsEvaluated {
subprojects {
sonarqube{
properties {
def projectKey = "$project.group:$project.name".replaceAll('/', '-')
property 'sonar.projectKey', projectKey
}
}
}
}
但是,这不适用于SonarQube。有谁遇到过类似的问题?
感谢您的帮助!
答案 0 :(得分:0)
在Linux环境中,对我来说有用的是用':'替换'/',并覆盖moduleKey。在root build.gradle文件中添加此部分:
子项目{
sonarqube {
String regex = "(.*)/(.*)"
String projectKey = project.name.replaceAll(regex, "\$1:\$2")
String sonarModuleKey = rootProject.group + ':' + rootProject.name + ':' + projectKey
properties {
property "sonar.moduleKey", sonarModuleKey
}
}
}