如何正确配置gradle子项目?
我的gradle项目结构如下所示:如何正确配置gradle子项目?,gradle,sonarqube,Gradle,Sonarqube,我的gradle项目结构如下所示: geode-core geode-lucene extensions/geode-modules extensions/geode-modules-session sonarqube { properties { property "sonar.modules", "extensions.geode-modules" ... property "extensions.geode-modules.sonar.projectName"
geode-core
geode-lucene
extensions/geode-modules
extensions/geode-modules-session
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"
}
}
对于extensions
子项目,gradle任务将因此与extensions/geode模块:build
一起引用
当我尝试在Gradle中使用SonarQube时,我得到以下错误(这是1.2 SonarQube Gradle插件):
因此,模块名称中的/
导致了一个问题。为了修复此问题,我尝试在该线程上执行以下解决方案:
我的gradle配置现在如下所示:
geode-core
geode-lucene
extensions/geode-modules
extensions/geode-modules-session
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"
}
}
关于如何使其正常工作,您有什么想法吗?您需要在模块中添加一个子模块并使用属性文件 例如: 特性:
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
一种通用方法是替换模块名称中的所有斜杠。这样,您就不需要配置各种属性。将此部件添加到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
}
}
}
sonarqube {
properties {
property "sonar.modules", "extensions"
...
property "extensions.sonar.modules", "geode-modules"
property "geode-modules.sonar.sources", "src/main/java"
}
}
subprojects {
sonarqube {
String regex = "(.*)/(.*)"
String projectKey = project.name.replaceAll(regex, "\$1:\$2")
String sonarModuleKey = rootProject.group + ':' + rootProject.name + ':' + projectKey
properties {
property "sonar.moduleKey", sonarModuleKey
}
}
}