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

标签 maven gradle

我有一个包含 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/

相关文章:

gradle - Gradle 4.4需要Java 7或更高版本才能运行。您的构建当前已配置为使用Java 6

java - 从 Android Studio 项目中删除 Android(app 或 lib)模块需要在每次项目启动时将项目与 gradle 文件同步

java - Mac 上的 MVN 权限被拒绝

postgresql - SoapUI:5.6.0 java.lang.ClassNotFoundException:使用 maven 运行测试时的 PostgreSQL/org.postgresql.Driver

maven - 如何向另一个项目中的 Spring Boot Jar 添加依赖项?

java - 无法从 src\test 文件夹中找到 "Run File"-> 找不到或无法加载主类

android - 从另一个项目编译模块

maven - 如何让文件操作在 Jenkins 工作?

java/android - TimeZone 的一致方式 3 字母缩写

android - 使用 MAC OS X 将 hello-neon(ndk 示例)导入 Android Studio