Apple Silicon MacOS更新后Gradle执行ng build失败求助
解决Apple Silicon MacOS更新后Gradle执行ng build找不到命令的问题
问题原因
MacOS更新后,Gradle执行Zsh脚本或直接调用ng时,默认环境变量的PATH未包含Homebrew在Apple Silicon上的安装路径(/opt/homebrew/bin),且非交互式Zsh进程不会自动加载~/.zshrc中的PATH配置,导致找不到ng命令。
解决方案
方案1:直接使用ng的绝对路径
先在Zsh终端执行which ng,获取ng的绝对路径(Apple Silicon上通常为/opt/homebrew/bin/ng),然后修改Gradle任务或脚本:
修改Gradle任务
task ngBuild(type:Exec) { group 'frontendTasks' println "Do npm build" workingDir 'src/main/resources/frontend-angular/' commandLine '/opt/homebrew/bin/ng', 'build' }
修改runNgBuild.sh脚本
#! /bin/zsh /opt/homebrew/bin/ng build
方案2:在脚本中加载完整Zsh环境
非交互式Zsh不会自动加载~/.zshrc,可以在脚本中手动加载:
#! /bin/zsh source ~/.zshrc ng build
注意:如果~/.zshrc中包含仅适用于交互式shell的代码(如主题、提示符配置),建议将PATH相关配置迁移到~/.zshenv文件中(非交互式Zsh会自动加载该文件),避免加载冗余代码。
方案3:在Gradle任务中配置PATH环境变量
直接在Gradle的Exec任务中扩展PATH,包含Homebrew的bin目录:
task ngBuild(type:Exec) { group 'frontendTasks' println "Do npm build" workingDir 'src/main/resources/frontend-angular/' environment 'PATH', "/opt/homebrew/bin:$PATH" commandLine 'ng', 'build' }
这个方案无需额外脚本,直接在Gradle中配置即可解决路径问题。
内容的提问来源于stack exchange,提问作者ngs1996
相关产品推荐
相关产品推荐

