根目录执行Gradle命令无法识别子项目Project b,求解决方案
问题解决:Gradle构建带空格的子项目报错
嗨,这个问题我之前踩过坑!核心原因就是你的子项目名称包含空格,而你在根目录执行Gradle命令时,没有对带空格的项目路径做特殊处理,导致shell把:Project和b:build拆成了两个独立的参数,Gradle自然找不到名为Project b的项目了。
下面给你几个可行的解决办法:
给项目路径加引号(适用于绝大多数shell环境,比如Bash、Zsh、Windows PowerShell):
把整个项目路径用双引号或单引号包裹,让shell把它当成一个整体解析:gradle ":Project b:build"或者用单引号:
gradle ':Project b:build'用反斜杠转义空格(适合类Unix系统的shell):
在空格前加反斜杠,告诉shell这个空格是路径的一部分,不是参数分隔符:gradle :Project\ b:build给子项目设置别名(一劳永逸):
如果觉得带空格的路径总是很麻烦,可以在根目录的settings.gradle(或settings.gradle.kts)里给子项目设置一个不带空格的别名:
Groovy版本:include ':Project b' project(':Project b').name = 'projectB'Kotlin版本:
include(":Project b") project(":Project b").name = "projectB"设置完成后,你就可以用更简洁的命令构建这个子项目了:
gradle :projectB:build
至于为什么进入子项目目录后执行gradle build能成功?那是因为当你在子项目目录下运行Gradle时,它会默认构建当前目录对应的项目,不需要你指定带空格的路径,自然就避开了参数拆分的问题~
内容的提问来源于stack exchange,提问作者Rafael Paz
相关产品推荐
相关产品推荐

