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

Gradle依赖解析总是先尝试mavenCentral?,maven,gradle,Maven,Gradle,我有一个包含javax.jms:jms:1.1的依赖链。在maven central中,该工件有一个POM,但是jar似乎丢失了(maven central有一个问题)。但是,我们有一个本地存储库,其中包含我们需要的工件。因此,我认为这只需将本地存储库放在首位,然后将mavenCentral()放在最后即可: 然而,当运行gradle-i时,我们可以看到它首先关注mavenCentral。因为它在mavenCentral上找到POM,所以它不会查看任何其他存储库,但由于缺少jar,构建失败: D

我有一个包含javax.jms:jms:1.1的依赖链。在maven central中,该工件有一个POM,但是jar似乎丢失了(maven central有一个问题)。但是,我们有一个本地存储库,其中包含我们需要的工件。因此,我认为这只需将本地存储库放在首位,然后将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中的某些模块在您的本地存储库中有它们的工件:

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

POM肯定在本地的maven。如果我完全删除mavenCentral(),它就会工作(当然,只要我删除了仅在maven central中存在的其他依赖项)。我不想重新定义artifactURL,因为并不是每个依赖项都在本地maven中,所以在某些方面我仍然依赖maven central。很难说没有看到所有细节。无论如何,artifactURL配置其他工件URL。它是专门为Maven Central只包含模块POM的用例而设计的。它仍然可以在Maven Central中找到所有内容。@PeterNiederwieser正是这为我解决了jms-1.1.jar的一个问题。我添加了
”https://repository.jboss.org/nexus/content/groups/public“
作为
工件URL
@请接受彼得的回答作为解决办法。
repositories {
    maven {
        url "http://repo1.maven.org/maven2"
        artifactUrls "http://local-maven:12345/repo"          
    }
}