2016-03-07 39 views
0

我gradle這個項目的結構看起來是這樣的:Sonarqube如何正確配置gradle子項目?

geode-core 
geode-lucene 
extensions/geode-modules 
extensions/geode-modules-session 

對於extensions子項目,gradle這個任務將因此與extensions/geode-modules:build例如引用。

當我嘗試使用SonarQube的搖籃,我發現了以下錯誤(這是1.2 SonarQube搖籃插件):

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

你需要添加到您的模塊的子模塊,並使用屬性文件 例如:

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" 
    } 
} 
1

通用方法是替換模塊名稱中的所有斜槓。這樣,您不需要配置各種屬性。將此部分添加到您的根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 
     } 
    } 
} 
相關問題