1

(这个问题详细说明了我之前提出的一个问题,但有足够的差异,我认为它需要一个单独的问题)

Gradle 论坛上的这篇文章描述了类似的症状,但与我的问题并不完全相同。

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

未找到 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执行 HEAD 请求-1.2.pom
2016-04-12T10:28:40.924+01:00 在远程信息请求中收到状态 {}(消息:501)-返回未找到的资源

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

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

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

4

1 回答 1

1

Here is a snippet of our Gradle conf, which works:

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'

The only difference I can see is that we put /artifactory/libs-release in the maven url, while you have /artifactory/plugins-release. Perhaps you should try pointing to libs-release, and see if that works?

于 2016-04-11T20:29:22.073 回答