我有一个包含 javax.jms:jms:1.1 的依赖链。在 maven central 中,该 Artifact 有一个 POM,但 jar 似乎丢失了(maven central 的问题)。但是,我们有一个包含我们需要的 Artifact 的本地存储库。所以,我认为这只是把我们的本地存储库放在第一位,然后 mavenCentral() 最后一样简单:
repositories {
maven { url 'http://local-maven:12345/repo' }
mavenCentral()
}
但是,当运行 gradle -i 时,我们可以看到它首先查看了 mavenCentral。因为它在 mavenCentral 上找到了 POM,所以它不会查看任何其他存储库,但是由于缺少 jar,构建失败:
Download http://repo1.maven.org/maven2/javax/jms/jms/1.1/jms-1.1.pom
Resource missing. [HTTP GET: http://repo1.maven.org/maven2/javax/jms/jms/1.1/jms-1.1.jar]
....
* What went wrong:
Execution failed for task 'unzipDependencies'.
> Could not resolve all dependencies for configuration 'compile'.
> Could not download artifact 'javax.jms:jms:1.1:jms.jar'
> Artifact 'javax.jms:jms:1.1:jms.jar' not found.
那么为什么它首先查看 mavenCentral 呢?为什么不先查看我自己的 Maven 存储库?如果是这样,问题就会解决,因为它会发现 javax.jms:jms:1.1:jms.jar 就好了……但我看不出有什么强制方法。
最佳答案
存储库按其声明的顺序进行搜索。我最好的猜测是您没有将 POM 发布到本地存储库,这就是搜索继续的原因。因此,要么修复它,要么告诉 Gradle Maven Central 中的某些模块在您的本地存储库中有它们的 Artifact :
repositories {
maven {
url "http://repo1.maven.org/maven2"
artifactUrls "http://local-maven:12345/repo"
}
}
关于maven - Gradle 依赖解析总是先尝试 mavenCentral?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21240819/