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

Gradle如何同时构建两个多模块项目或引用其他项目的模块?

错误原因

你遇到的报错核心是Gradle的项目识别规则冲突:你尝试引入的子模块目录下自带独立的settings.gradle文件,Gradle默认会将包含settings.gradle的目录判定为独立项目根,不会将其识别为上层根项目的子模块,因此构建时根项目无法索引到你声明的子模块,触发如下报错:

Project 'MyProject' not found in root project 'MyProject'.

场景1:合并同仓库下的多个带独立配置的模块共同构建

针对你当前操作的polkaj项目场景,按如下步骤操作即可实现主库+示例模块共同构建:

  • 第一步:清理子模块的独立项目标识
    进入你要引入的6个examples子模块的目录,将每个目录下的settings.gradle(Gradle KTS对应为settings.gradle.kts)重命名为settings.gradle.disabled或直接删除,取消其独立项目标识,Gradle就会将其识别为上层根项目的子模块。
  • 第二步:调整根项目settings.gradle配置
    你现有的子模块引入逻辑基本正确,补充根项目名称声明避免名称冲突即可,完整配置示例如下:
// 根项目settings.gradle 配置
rootProject.name = 'polkaj-root'

// 引入示例子模块
include(':balance')
project(':balance').projectDir = file('examples/balance')
include(':encoding')
project(':encoding').projectDir = file('examples/encoding')
include(':keys')
project(':keys').projectDir = file('examples/keys')
include(':rpc')
project(':rpc').projectDir = file('examples/rpc')
include(':runtime-explorer')
project(':runtime-explorer').projectDir = file('examples/runtime-explorer')
include(':types')
project(':types').projectDir = file('examples/types')
  • 第三步:配置子模块依赖
    如果示例子模块需要依赖主库的功能,直接在子模块的build.gradle中声明项目依赖即可,示例如下:
dependencies {
    // 替换为实际的主库模块名即可
    implementation project(':polkaj-common')
}

场景2:引用外部其他独立Gradle项目的模块

如果你要引入的模块本身是外部独立项目,不需要修改其原有配置,可以使用Gradle复合构建功能实现:

  • 第一步:在根项目的settings.gradle中添加includeBuild声明,指向外部独立项目的根目录:
// 路径支持本地相对路径或绝对路径
includeBuild '../path-to-external-polkaj'
  • 第二步:在需要依赖外部项目模块的build.gradle中直接声明对应模块的maven坐标即可,Gradle会自动匹配复合构建中的本地项目,优先使用本地构建产物而非远程依赖:
dependencies {
    // 替换为外部项目对应模块的实际坐标和版本
    implementation 'io.emeraldpay.polkaj:polkaj-rpc:0.12.0'
}

内容的提问来源于stack exchange,提问作者Paul Verest on LinkedIn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:51:02