You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gradle本地库依赖锁与版本范围使用问题咨询

解决Gradle多模块依赖锁定传递问题

核心原因

未启用依赖锁定的project2在解析传递依赖时,会重新计算latest.release的版本,不会自动继承lib1已锁定的版本——依赖锁定默认是项目级别的,跨项目不会自动传递锁定约束。

不需要发布lib1,直接用以下方案解决:

方案1:给project2启用依赖锁定并继承lib1的锁定约束

在project2的build.gradle中添加依赖锁定配置,开启使用传递依赖的锁定规则:

dependencyLocking {
    lockAllConfigurations()
    useTransitiveLocks() // 允许使用依赖模块(如lib1)的锁定版本
}

执行./gradlew :project2:dependencies --write-locks生成project2的锁文件,之后project2会优先使用lib1已锁定的sqs版本。

方案2:在lib1中强制锁定的依赖版本

修改lib1的build.gradle,把锁定的版本转换成强制依赖,下游项目无论是否启用锁定,都会使用该版本:

// 在lib1中添加强制版本约束
configurations.all {
    resolutionStrategy.force 'software.amazon.awssdk:sqs:1.0.0'
}

方案3:在根项目配置统一的依赖锁定

如果希望所有子项目共享锁定规则,可在根项目的build.gradle中配置全局依赖锁定:

// 根项目build.gradle
allprojects {
    dependencyLocking {
        lockAllConfigurations()
        // 可选:将锁文件统一存储在根目录管理
        lockFile.set(file("$rootDir/gradle/dependency-locks/${project.name}-${configuration.name}.lockfile"))
    }
}

执行./gradlew dependencies --write-locks生成全局锁文件,所有子项目(包括project2)都会遵循统一的锁定版本。

注意事项

  • 方案1需要project2维护自身锁文件,适合需要灵活控制传递锁定的场景;
  • 方案2最直接,适合需要强制固定传递依赖版本的场景;
  • 方案3适合多模块统一版本管理,减少重复配置。

内容的提问来源于stack exchange,提问作者acommoner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:10:17