【问题标题】:Gradle Build error while using Sonarqube local-plugin from file system从文件系统使用 Sonarqube 本地插件时 Gradle 构建错误
【发布时间】:2021-09-02 03:58:11
【问题描述】:

我正在尝试在我的 gradle build 中使用 sonarqube 扫描仪的插件。由于证书问题,它既不能从互联网下载,也不能从我们环境中通常放置其他插件的 Nexus 存储库下载。

  • Gradle 版本:4.1.10
  • 声纳插件 - 3.1

build.gradle

buildscript {
    dependencies {
      classpath files ("../../thirdparty/sonarqube-gradle-plugin-3.1")
                 }
             }

apply plugin: "org.sonarqube"

在执行构建时,我收到错误:

line: 12 * 出了什么问题:\n 评估根项目“自定义扩展”时出现问题。\n> 未找到 ID 为“org.sonarqube”的插件。

我做得对吗?如何解决?

【问题讨论】:

    标签: gradle sonarqube build.gradle


    【解决方案1】:

    根据插件documentationflat directory resolver 的描述我会这样:

    buildscript {
      repositories {
        flatDir {
          dirs "../../thirdparty/sonarqube-gradle-plugin-3.1"
        }
      }
      dependencies {
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1"
      }
    }
    
    apply plugin: "org.sonarqube"
    

    编辑:

    sonarqube-gradle-plugin 依赖于sonar-scanner-api,两者都需要加载。使用flatDir 解析器时,不会咨询 POM,并且无法自动发现此依赖关系。在这种情况下,您还需要显式依赖 sonar-scanner-api

    buildscript {
      repositories {
        flatDir {
          dirs "thirdparty/sonarqube-gradle-plugin-3.1"
        }
      }
      dependencies {
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1"
        classpath "org.sonarsource.scanner.api:sonar-scanner-api:2.16.0.226"
      }
    }
    

    您的第 3 方目录需要包含两个 jar;不需要 POM,因为无论如何都不会咨询它们:

    $ find thirdparty/ -type f
    thirdparty/sonarqube-gradle-plugin-3.1/sonar-scanner-api-2.16.0.226.jar
    thirdparty/sonarqube-gradle-plugin-3.1/sonarqube-gradle-plugin-3.1.jar
    

    作为一种替代方法,您可以在本地重新创建 Maven 层次结构,以便自动解析依赖项。这包括更多的目录和文件,但从长远来看可能更容易维护(如果出现任何新的依赖项,只需更新目录内容而不更改 build.gradle):

    buildscript {
      repositories {
        maven {
          url "file://${projectDir}/thirdparty"
        }
      }
      dependencies {
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1"
      }
    }
    
    apply plugin: "org.sonarqube"
    

    这需要重新创建所有必需的文件和目录:

    $ find thirdparty/ -type f
    thirdparty/org/sonarsource/parent/parent/55/parent-55.pom
    thirdparty/org/sonarsource/scanner/api/sonar-scanner-api/2.16.0.226/sonar-scanner-api-2.16.0.226.jar
    thirdparty/org/sonarsource/scanner/api/sonar-scanner-api/2.16.0.226/sonar-scanner-api-2.16.0.226.pom
    thirdparty/org/sonarsource/scanner/api/sonar-scanner-api-parent/2.16.0.226/sonar-scanner-api-parent-2.16.0.226.pom
    thirdparty/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/3.1/sonarqube-gradle-plugin-3.1.jar
    thirdparty/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/3.1/sonarqube-gradle-plugin-3.1.pom
    

    【讨论】:

    • 感谢您的回复,当我使用上述 build.gradle 运行时出现错误:
    • * 出了什么问题:评估根项目“自定义扩展”时出现问题。 > 无法应用插件 [id 'org.sonarqube'] > 无法创建任务 ':sonarqube'。 > 无法为类 org.sonarqube.gradle.SonarQubeTask 生成代理类。
    猜你喜欢
    • 2015-11-22
    • 2016-01-22
    • 2019-02-11
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 2012-06-05
    • 2015-07-25
    相关资源
    最近更新 更多