如何正确配置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"

我的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"
  }
}
对于
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
        }
    }
}