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

如何在Gradle项目中引用另一个项目的本地版本作为依赖

解决方案:使用Gradle复合构建(Composite Builds)

Gradle的复合构建正好能满足你的需求——无需推送项目B到远程,让A直接引用本地修改后的B,同时完整保留B的传递性依赖,且不会将B转为A的子项目。具体操作如下:

1. 配置项目A的settings.gradle

在项目A的settings.gradle文件中添加以下配置,引入本地的项目B:

// 替换为你本地项目B的实际路径,支持绝对路径或相对路径(比如../projectB)
includeBuild('/your/local/path/to/projectB') {
    dependencySubstitution {
        // 替换A中原本依赖的B坐标为本地项目
        // 这里的com.example:projectB要和A的build.gradle里依赖B的坐标完全一致
        substitute module('com.example:projectB') with project(':projectB')
    }
}

2. 验证效果

配置完成后,直接在项目A中执行构建命令(比如./gradlew build),Gradle会自动先构建本地的项目B,然后用B的构建产物参与A的构建,同时完整保留B的所有传递性依赖,和你依赖远程版本的B时的依赖处理逻辑完全一致。

3. 处理依赖锁定

因为你使用了Gradle依赖锁定,需要注意:

  • 启用复合构建后,Gradle会优先使用本地的B,忽略锁定文件中记录的远程版本,无需修改锁定文件即可验证B的本地修改
  • 当你确认B的修改没问题,需要发布正式版本时,只需注释掉settings.gradle中的includeBuild配置,然后按原有流程更新A中B的版本号,重新执行./gradlew generateLock saveLock即可

关键优势

  • 无需推送B到远程CI发布,本地修改实时生效
  • 保留B的传递性依赖,依赖冲突解决逻辑和正常构建完全一致
  • 两个项目仍属于独立Git仓库,不会被合并为子项目
  • 完全避开本地JAR、合并JAR的弊端

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 13:16:02