【问题标题】:SonarQube Gradle Plugin is not found by ArtifactoryArtifactory 未找到 SonarQube Gradle 插件
【发布时间】:2016-08-01 22:10:51
【问题描述】:

(这个问题详细说明了a question I asked earlier,但有足够的差异,我认为它需要一个单独的问题)

This post on the Gradle forums 描述了类似的症状,但与我的问题不太一样。

就像那里的海报一样,我得到了错误:

未找到 ID 为“org.sonarqube”的插件。

当尝试在我的 build.gradle 文件中使用 SonarQube Gradle 插件时:

buildscript {
  repositories {
    mavenLocal()
    maven { url 'http://[artifactory-url]:8081/artifactory/plugins-release/' }
  }
  dependencies {
    classpath("org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:1.2")
  }
}

apply plugin: 'org.sonarqube'

他说他的 Artifactory 实例已经缓存了插件,而我的没有。与他类似,我在公司防火墙后面,并且没有 Artifactory 的管理员权限,但我可以看到 plugins-release 虚拟仓库确实包括 https://plugins.gradle.org/m2http://jcenter.bintray.com。通常,只需从我们的 Artifactory 服务器请求一个库,它就会立即找到并缓存该库,但在这种情况下,它显然会失败。

当我删除 apply plugin... 行时,我看到以下错误:

   > Could not find org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:1.2.
     Searched in the following locations:
     file:/C:/Users/[username]/.m2/repository/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/1.2/sonarqube-gradle-plugin-1.2.pom
     file:/C:/Users/[username]/.m2/repository/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/1.2/sonarqube-gradle-plugin-1.2.jar
     http://[artifactory-url]/artifactory/plugins-release/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/1.2/sonarqube-gradle-plugin-1.2.pom
     http://[artifactory-url]/artifactory/plugins-release/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/1.2/sonarqube-gradle-plugin-1.2.jar

所以,我相当肯定 Artifactory 无法找到并缓存插件。如果我浏览到 https://plugins.gradle.org/m2/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/1.2/sonarqube-gradle-plugin-1.2.pom,我可以访问 POM 文件,对于 JAR 文件也是如此,但我注意到如果我浏览到 https://plugins.gradle.org/m2/org/sonarsource/scanner,它不包含“gradle”作为子目录。我不知道这是否相关,但也许这就是我在 Artifactory 中看到的问题的原因?

我不确定是否将此作为插件的错误提出,或者它是否是 Artifactory 问题,或者只是我们这边的某种错误配置。任何想法都非常感谢!

使用跟踪更新

感谢@drorb,我从 Artifactory 获得了踪迹,发现:

2016-04-12T10:28:40.918+01:00 对https://plugins.gradle.org/m2/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/1.2/sonarqube-gradle-plugin-1.2.pom执行 HEAD 请求
2016-04-12T10:28:40.924+01:00 在远程信息请求中收到状态 {}(消息:501)-返回未找到的资源

501 '未实现',所以我假设这告诉我 plugins.gradle.org 存储库不支持 HEAD 请求,这似乎意味着 Artifactory 无法正确查询它。我很惊讶它适用于其他人 - 也许有一些 Artifactory 配置我可以更改为不执行 HEAD 请求?

进一步更新原因,但不是真正的答案

进一步挖掘让我意识到 HEAD 请求确实实际上给了我正确的响应(303 导致 200),所以我认为问题在于我们的 Artifactory 服务器的连接。这似乎不值得添加作为答案,但我会将其留在这里,以防它帮助遇到类似问题的其他人。

【问题讨论】:

  • 我将从在 Artifactory 中运行跟踪请求开始。这应该为您提供有关 Artifactory 尝试执行的操作以从虚拟存储库中解析文件的更多信息。在您的情况下,跟踪请求应该是 http://[artifactory-url]:8081/artifactory/plugins-release/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/1.2/sonarqube-gradle-plugin-1.2 .pom?trace
  • 我尝试按如下方式模拟您的 HEAD 请求: > curl -I plugins.gradle.org/m2/org/sonarsource/scanner/gradle/… 结果是 303 See Other,并转发到 Location: gradleware-plugins.s3.amazonaws.com/… 使用 curl -IL 重新运行,成功完成了重定向。你有旧的神器吗?或者它可能太锁定而无法重定向?
  • 啊,抱歉 - 我以为我已经添加了进一步的更新,但显然没有提交 - 我在我的机器上看到通过 PostMan 执行 HEAD 的相同操作,所以它必须是一些防火墙/代理问题在这里。我已经提出了适当的要求,所以我会一直祈祷...感谢您的帮助!

标签: gradle sonarqube artifactory gradle-plugin sonarqube-scan


【解决方案1】:

这是我们 Gradle conf 的 sn-p,它可以工作:

buildscript {
    repositories {
        maven {
            url "http://[artifactory-url]:7980/artifactory/libs-release"
        }
    }
    dependencies {
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:1.2"
    }
}
apply plugin: 'org.sonarqube'

我能看到的唯一区别是我们将 /artifactory/libs-release 放在 maven url 中,而您有 /artifactory/plugins-release。也许您应该尝试指向 libs-release,看看是否可行?

【讨论】:

  • 谢谢 - 好建议,我试过了,但没有运气。我可以从@drorb 建议的跟踪中看到,它正在尝试从 plugins.gradle.org 下载它,但在执行 HEAD 请求时得到 501。不知道该怎么做...
猜你喜欢
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
  • 2015-07-30
  • 2015-10-14
  • 2016-07-25
  • 1970-01-01
  • 2018-03-10
相关资源
最近更新 更多