我的gradle项目结构如下所示:
geode-core
geode-lucene
extensions/geode-modules
extensions/geode-modules-session
对于extensions
个子项目,例如,extensions/geode-modules:build
会引用gradle任务。
当我尝试在Gradle中使用SonarQube时,我收到以下错误(这是1.2 SonarQube Gradle插件):
Validation of project reactor failed:
o "io.pivotal.gemfire:extensions/geode-modules" is not a valid project or module key. Allowed characters are alphanumeric, '-', '_', '.' and ':', with at least one non-digit.
o "io.pivotal.gemfire:extensions/geode-modules-session" is not a valid project or module key. Allowed characters are alphanumeric, '-', '_', '.' and ':', with at least one non-digit.
因此模块名称中的/
导致了问题。为了解决这个问题,我尝试在此主题上使用解决方案:http://sonarqube-archive.15.x6.nabble.com/Is-not-a-valid-project-or-module-key-when-Upgrade-sonar-3-0-to-4-0-td5021412.html
我的gradle配置现在看起来像这样:
sonarqube {
properties {
property "sonar.modules", "extensions.geode-modules"
...
property "extensions.geode-modules.sonar.projectName", "geode-modules"
property "extensions.geode-modules.sonar.sources", "src/main/java"
}
}
同样的错误。此外,这也没有工作:
sonarqube {
properties {
property "sonar.modules", "extensions/geode-modules"
...
property "extensions/geode-modules.sonar.projectName", "geode-modules"
property "extensions/geode-modules.sonar.sources", "src/main/java"
}
}
有关如何使其正常工作的任何想法?
答案 0 :(得分:4)
通用方法是替换模块名称中的所有斜杠。这样,您就不需要配置各种属性。在root build.gradle文件中添加此部分:
subprojects {
sonarqube {
String regex = "(.*)/(.*)"
String projectKey = project.name.replaceAll(regex, "\$1:\$2")
String sonarModuleKey = rootProject.group + ':' + rootProject.name + ':' + projectKey
properties {
property "sonar.moduleKey", sonarModuleKey
}
}
}
答案 1 :(得分:0)
您需要向模块添加子模块并使用Property文件 例如:
projectMy-
-moduleOne
--oneSub1
--oneSub2
-moduleTwo
--twoSub1
--twoSub2
-sonar-project.properties
属性:
sonar.projectName=\:projectMy
sonar.projectKey=projectMy
sonar.projectVersion=0.0.0.1
sonar.host.url=<sonar.host:port>
sonar.jdbc.driverClassName=<jdbc.driver.name>
sonar.jdbc.url=<your.jdbc>
sonar.jdbc.username=<your.username>
sonar.jdbc.password=<your.password>
sonar.forceAnalysis=true
sonar.sourceEncoding=UTF-8
sonar.sources=src/main/java
sonar.modules=moduleOne,moduleTwo
moduleOne.sonar.modules=oneSub1,oneSub2
moduleTwo.sonar.modules=twoSub1,twoSub2
和build.gradle任务
apply plugin: 'sonar-runner'
version = '<version>'
repositories {
mavenCentral()
}
sonarRunner {
sonarProperties {
property "sonar.projectVersion", project.version
}
}
如果你只想要gradle
sonarqube {
properties {
property "sonar.modules", "extensions"
...
property "extensions.sonar.modules", "geode-modules"
property "geode-modules.sonar.sources", "src/main/java"
}
}