Gradle,SonarQube插件和带有非法字符的项目名称

时间:2016-02-09 08:05:41

标签: gradle sonarqube

我们有一个多项目gradle构建,它将项目组织到目录中。例如:

root
+--Libraries
   +-- Project1
   +-- Project2
+--Tools
   +-- Project3
   +-- Project4

由于SonarRunner插件已被弃用,我们尝试使用官方SonarQube plugin for gradle。使用的gradle版本是2.10。

由于我们的项目结构,项目名称存在问题:SonarQube插件接收项目名称“Libraries \ Project1”。 “\”是项目名称的非法字符。

以前,对于SonarRunner,通过覆盖ProjectKey属性来解决问题:

// project specific sonar configuration
gradle.projectsEvaluated {
  subprojects {
    sonarRunner {
      sonarProperties {
        def projectKey = "$project.group:$project.name".replaceAll('/', '-')
        property 'sonar.projectKey', projectKey
      }
    }
  }
}

为SonarQube尝试的等价物是

// project specific sonar configuration
gradle.projectsEvaluated {
  subprojects {
    sonarqube{
      properties {
        def projectKey = "$project.group:$project.name".replaceAll('/', '-')
        property 'sonar.projectKey', projectKey
      }
    }
  }
}

但是,这不适用于SonarQube。有谁遇到过类似的问题?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

在Linux环境中,对我来说有用的是用':'替换'/',并覆盖moduleKey。在root build.gradle文件中添加此部分:

子项目{

sonarqube {
    String regex = "(.*)/(.*)"
    String projectKey = project.name.replaceAll(regex, "\$1:\$2")
    String sonarModuleKey = rootProject.group + ':' + rootProject.name + ':' + projectKey

    properties {
        property "sonar.moduleKey", sonarModuleKey
    }
}

}