【问题标题】:SonarQube - How to use sonarRunner tasks / sonar.properties file globally with gradle wrapper for all projectsSonarQube - 如何使用所有项目的 gradle 包装器全局使用 sonarRunner 任务 / sonar.properties 文件
【发布时间】:2015-09-20 09:32:22
【问题描述】:

我正在我的一个项目中实现 sonarQube。源代码在 java 中,所有构建文件都用 gradle 2.3 编写。我的项目有 8 个模块 存储库,我在构建模块时使用 gradle 包装器。我用模块源代码检查了每个模块的 gradle 包装器。当我触发构建时,它从 artifactory 签出 gradle 版本(在包装器属性文件中提到)并使用 gradlew 构建神器。

包装属性文件中提到了以下内容

Tue Mar 17 10:20:49 EDT 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://xyx.n.tson.com\:9000/artifactory/ext-release-local/org/gradle/gradle/2.3/gradle-2.3-bin.zip

结帐时,它会以以下方式在工作区中创建一个包装器/dist(使用 Jenkins)

wrapper/dists/gradle-2.3-bin/7gkccujig8oqm5bun82efob8m7/gradle-2.3/init.d/

现在我想实现声纳,为此我需要创建全局 sonar.properties 文件或更好地为 sonarRunner Gradle 任务添加一个部分(包含所有 sonar.xx.xx 属性),我可以在其中保留所有配置并在全局范围内使用它。我不想为每个模块编写属性。有人可以告诉我是否使用 gradle 包装器,我可以在其中保留此属性文件并使其对所有模块都是全局的,而不是为每个模块更改或创建属性文件。

【问题讨论】:

标签: unit-testing gradle sonarqube code-coverage


【解决方案1】:

如果您想要的是在您的项目中激活 sonarqube 插件的非侵入式方式(即不修改 build.gradle),那么我不知道该怎么做。

但是,如果您想要将全局 Jenkins 配置中配置的属性(如服务器 URL 和凭据)传递给您的构建,那么您应该遵循此票证,因为这是一个已知限制: http://jira.sonarsource.com/browse/SONARJNKNS-217

【讨论】:

    【解决方案2】:

    我会把这个文件放在你的根项目附近的某个地方,而不是把它和包装器本身放在一起。我会把它放在$rootproject/gradle/sonar/sonar.properties)

    从您的构建脚本中,您可以通过

    引用此文件
    rootproject.file("gradle/sonar/sonar.properties")
    

    干杯,

    勒内

    【讨论】:

    • 即使我运行“sonarRunner”Gradle 任务,这是否有效?我假设如果有人从命令行(或在 Jenkins 中使用 Execute Shell)运行 sonar-runner(在项目的工作区中),这将起作用。我想他想问的是,他如何创建 GRADLE_HOME/init.d/a-global.gradle 文件,他可以在其中放置他的 sonarRunner { ... } 设置/变量等,并且每个模块都可以使用它/项目的构建范围。当他使用 gradlew (包装器)时,如何做到这一点。基本上,我们不必在每个单独的项目或任何地方签入 sonar.properties,甚至在根项目中。
    猜你喜欢
    • 1970-01-01
    • 2015-02-20
    • 2015-05-11
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2015-11-16
    相关资源
    最近更新 更多