【发布时间】: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/m2 和 http://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