2016-03-07 5 views
0

Моя Gradle структура проекта выглядит следующим образом:Sonarqube, как правильно настроить подпроекты gradle?

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

Для extensions подпроектов, Gradle задачи, таким образом, можно ссылаться с extensions/geode-modules:build, например.

Когда я пытаюсь использовать SonarQube в Gradle Я получаю следующее сообщение об ошибке (это 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

вам необходимо добавить к вашему модулю подмодуль и использовать файл свойств пример:

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

если вы хотите только градуировать

sonarqube { 
    properties { 
    property "sonar.modules", "extensions" 
    ... 
    property "extensions.sonar.modules", "geode-modules" 
    property "geode-modules.sonar.sources", "src/main/java" 
    } 
} 
1

Общий подход заключается в замене всех косых черт в имени модуля. Таким образом, вам не нужно настраивать различные свойства. Добавьте эту часть в файл 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 
     } 
    } 
} 
Смежные вопросы