Gradle依赖解析总是首先尝试mavenCentral?

时间:2014-01-20 17:50:09

标签: maven gradle

我有一个包含javax.jms的依赖链:jms:1.1。在maven中心,有一个用于该神器的POM,但是jar似乎丢失了(maven central的一个问题)。但是,我们有一个包含我们需要的工件的本地存储库。所以,我认为它只是简单地将我们的本地存储库放在第一位,然后是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就好......但是我看不出强迫它的方法。

1 个答案:

答案 0 :(得分:4)

以声明的顺序搜索存储库。我最好的猜测是你没有将POM发布到本地存储库,这就是搜索继续的原因。所以要么修复它,要么告诉Gradle Maven Central中的某些模块在本地存储库中有它们的工件:

repositories {
    maven {
        url "http://repo1.maven.org/maven2"
        artifactUrls "http://local-maven:12345/repo"          
    }
}