Gradle多模块项目中模块是否被识别完全取决于settings.gradle中的include语句;删除对应include行即可移除模块,但需同步清理build.gradle中的project依赖、IDEA缓存及buildSrc/gradle脚本中的硬编码引用。

直接从 settings.gradle 或 settings.gradle.kts 中删掉模块声明
Gradle 多模块项目是否“包含”某个模块,完全由 settings.gradle(或 settings.gradle.kts)中的 include 语句决定。只要这里没写,Gradle 就根本不会识别那个目录为模块。
比如你有:
include ':app', ':common', ':network'
而实际目录下还有 :legacy 模块,只要它没被 include,执行 ./gradlew tasks 或 ./gradlew build 时,:legacy 的任何任务(包括 compileJava、test)都不会出现,也不会参与依赖解析。
操作就是打开 settings.gradle,删掉对应行,保存即可。不需要改 build.gradle,也不需要删文件夹。
删了 include 后,IDEA 里还显示模块?那是缓存没刷新
IntelliJ IDEA 会把已链接的 Gradle 模块缓存在项目结构中。即使你从 settings.gradle 移除了模块,IDEA 可能仍保留其模块配置,表现为灰色图标、无法编译、或提示 “Module not found in project structure”。
此时要手动清理:
- 在 Gradle 工具窗口(右侧边栏)中右键点击该模块名 → 选择 忽略 Gradle 项目(Ignore Gradle Project)
- 或者更彻底:右键 → 解除 Gradle 项目链接(Delete),然后点击 OK 确认移除
- 之后点击 IDEA 顶部菜单 File → Reload project,或点 Gradle 工具窗口上方的 Reload project 图标
注意:忽略 和 解除链接 是两回事。“忽略”只是停用同步,模块还在 Gradle 工具窗口里;“解除链接”才真正从 IDEA 项目中删除模块元数据。
如果模块已被其他模块依赖,删 include 会导致构建失败
Gradle 不会自动检查 include 和 dependencies 的一致性。假设 :app 的 build.gradle 里写了:
implementation project(':legacy')
但你只删了 settings.gradle 里的 include ':legacy',那么执行 ./gradlew build 会立刻报错:
Project with path ':legacy' could not be found in root project 'my-project'.
所以必须同步处理:
- 先搜索整个项目:
grep -r "project(':legacy')" . --include="*.gradle*" --exclude-dir=build - 删掉所有
project(':legacy')引用,或替换为 jar 依赖 / API 替代方案 - 再删
settings.gradle中的include - 最后清理 IDEA 缓存
buildSrc 或 gradle/ 下的脚本引用了该模块?那也得改
有些项目把模块名硬编码在 buildSrc/src/main/kotlin/Constants.kt 或 gradle/publishing.gradle 里,用于动态生成任务、发布逻辑或版本对齐。例如:
val legacyModule = project(":legacy")
这类引用不会被 Gradle 自动检测,但会在执行相关任务时报 Unknown project 错误。排查方式是:
- 运行
./gradlew --dry-run看哪些任务会触发,再针对性检查 - 全局搜索
":legacy"(带引号)和legacy(上下文含project或findProject) - 特别注意
buildSrc和gradle/目录下的 Kotlin/Groovy 脚本
这些地方漏改,会导致看似“移除了模块”,但 CI 构建或某条自定义命令仍失败——问题藏得深,容易误判为 Gradle 配置不生效。


















