【问题标题】:Gradle with a local pom dependency picks up wrong version具有本地 pom 依赖项的 Gradle 选择了错误的版本
【发布时间】:2016-07-12 17:08:38
【问题描述】:

我的 build.gradle 引用了本地 maven pom。我启用了mavenLocal() 存储库并将jar 添加为编译时依赖项(例如my-local-lib,如下所示)。

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile (group: 'com.company', name: 'my-local-lib', version: '1.0-SNAPSHOT')
}

Gradle 确实选择了它并将其添加为依赖项。然而,my-local-lib 本身依赖于 pom.xml 中指定的另一个库,但 gradle 无法选择 pom.xml 中指定的正确版本,而是选择了更早的版本。这个特定的 jar 依赖项不依赖于任何其他库。

这是一个已知问题吗?可能是因为 my-local-lib 是 SNAPSHOT 版本吗?有没有办法可以强制 gradle 尊重库中指定的版本?

【问题讨论】:

    标签: gradle spring-boot


    【解决方案1】:

    尝试添加以下代码:

    configurations.all {
        resolutionStrategy {
            cacheChangingModulesFor 0, 'seconds'
        }
    }
    

    build.gradle 脚本。

    【讨论】:

    • 添加了代码,不幸的是没有。我真的不明白它在哪里选择了特定的错误版本......我什至尝试在 maven 和 gradle 中删除库的所有本地缓存​​并重建。
    • 也许你在错误的地方删除了?尝试删除 maven 和 gradle 缓存。然后安装库。然后运行构建。再次安装 lib。再次运行构建以检查版本。
    • 再次尝试,但不幸的是没有。唯一有效的是,如果我在 build.gradle 文件中显式添加依赖项。
    • 看来这不是gradle的问题,而是maven的问题。如果我理解得很好,链条是:gradle -> maven -> maven。您需要配置第一个 maven 才能正确解析快照。
    • 好吧,事实证明它毕竟是弹簧启动。显然 spring-boot 依赖项父项目为所有库提供了版本,即使是那些不直接使用的库? docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/…。我添加了这一行:ext['solr.version'] = '5.5.2' 到 build.gradle 并且它起作用了
    猜你喜欢
    • 2018-06-12
    • 2021-12-22
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2017-08-21
    • 2012-04-29
    相关资源
    最近更新 更多