Artifactory

时间:2016-04-11 16:11:35

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

(这个问题详细阐述了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执行HEAD请求https://plugins.gradle.org/m2/org/sonarsource/scanner/gradle/sonarqube-gradle-plugin/1.2/sonarqube-gradle-plugin-1.2.pom
  2016-04-12T10:28:40.924 + 01:00收到关于远程信息请求的状态{}(消息:501) - 返回不合理的资源

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

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

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

1 个答案:

答案 0 :(得分:1)

以下是Gradle conf的片段,其中有效:

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,看看是否有效?