【发布时间】:2018-02-05 20:46:07
【问题描述】:
由于某种原因,gradle 没有从 Maven Central 下载依赖项。我们还设置了一个私有 Nexus 存储库,出于某种原因,gradle 正在那里寻找依赖项,而不是 Maven Central。
我收到大量错误,类似于:
Failed to get resource: HEAD. [HTTP HTTP/1.1 400 Repository version policy: SNAPSHOT does not allow version: 1.5.0.RELEASE: http://*****/repository/******/io/pivotal/spring/cloud/spring-cloud-services-dependencies/1.5.0.RELEASE/spring-cloud-services-dependencies-1.5.0.RELEASE.pom]
我发誓我在第一次设置时已经解决了这个问题,但无法复制。为了让我访问 Maven Central,我必须设置代理并将 Nexus 作为代理的排除项。
这一切都可以在本地工作,但是在处理 Jenkins 和 Sonarqube 插件时会出现问题。在本地我尝试了各种代理设置(删除 systemProps 甚至系统环境变量),但错误不一样(即找不到主机)。
知道为什么它无法从 Maven Central 下载吗?
更新:
所以我能够进一步缩小范围。当使用 Jenkins 和 Sonarqube withSonarQubeEnv 块时,gradle 如何解决依赖关系会发生一些事情。见 3 个例子:
// #1 This breaks when SNAPSHOT is declared first
repositories {
maven { // <------------------ SNAPSHOT
credentials {
username usr
password pass
}
url uri(snapshot)
}
maven { // <------------------ RELEASE
credentials {
username usr
password pass
}
url uri(release)
}
mavenCentral() // <---------- Maven Central
}
// #2 This works since mavenCentral() is first:
repositories {
mavenCentral() // <---------- Maven Central
maven { // <------------------ SNAPSHOT
credentials {
username usr
password pass
}
url uri(snapshot)
}
maven { // <------------------ RELEASE
credentials {
username usr
password pass
}
url uri(release)
}
}
// #3 This also works because no failing version policy:
repositories {
maven { // <------------------ RELEASE
credentials {
username usr
password pass
}
url uri(release)
}
mavenCentral() // <---------- Maven Central
}
当不在 Jenkins 中使用 withSonarQubeEnv 时,这可以正常工作。为什么使用withSonarQubeEnv 时顺序很重要?
【问题讨论】:
-
这是 SonarQube 问题吗?尝试在没有 SonarQube 的情况下使用 Jenkins 并分享结果。
-
@JeroenHeier 这是个好主意。我运行
build而不是sonarqubegradle 任务并收到相同的错误。我认为这与withSonarQubeEnv设置有关。我假设代理设置正在被删除,所以我在其中添加了withEnv并且没有任何更改。我还检查了 gradle 守护程序日志以查看代理环境变量是否已设置,并且确实如此。另外,我添加了一个 gradle 任务来查看 gradle.properties 代理设置是否仍然存在,并且它们确实存在。不知道为什么添加withSonarQubeEnv会导致这种情况。有什么想法吗? -
我的设置类似于此链接中的 SonarQube Scanner for Gradle 部分:docs.sonarqube.org/display/SCAN/…
标签: jenkins gradle sonarqube nexus maven-central