Gradle、SonarQube插件和项目名称使用非法字符

Gradle、SonarQube插件和项目名称使用非法字符,gradle,sonarqube,Gradle,Sonarqube,我们有一个多项目的gradle构建,它将项目组织到目录中。例如: root +--Libraries +-- Project1 +-- Project2 +--Tools +-- Project3 +-- Project4 由于SonarRunner插件已被弃用,我们尝试使用官方版本。使用的gradle版本是2.10 由于我们的项目结构,项目名称存在问题:SonarQube插件接收项目名称“Libraries\Project1”。“\”是项目名称的非法字符 以前,对于S

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

root
+--Libraries
   +-- Project1
   +-- Project2
+--Tools
   +-- Project3
   +-- Project4
由于SonarRunner插件已被弃用,我们尝试使用官方版本。使用的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。有没有人遇到过类似的问题


谢谢你的帮助

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

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