Gradlew无法找到AWS CLI求助:Java11+Gradlew6.3环境异常
解决M1 Mac上Java11+Gradle6.3调用AWS CLI找不到命令的问题
问题原因
M1芯片Mac的Homebrew默认安装路径为/opt/homebrew/bin,Gradle 6.x版本在M1环境下启动时,无法完整继承终端的PATH环境变量,导致Gradle进程找不到AWS CLI的执行路径;而Gradle 7.4.2已修复该环境变量继承问题,因此Java17+Gradle7.4.2组合可正常运行。
解决方案
1. 确认AWS CLI的绝对路径
在终端执行以下命令,获取aws命令的完整路径:
which aws
输出示例:/opt/homebrew/bin/aws 或 /usr/local/bin/aws
2. 直接使用AWS CLI绝对路径调用
修改Gradle脚本中调用AWS命令的部分,将aws替换为上述绝对路径,例如:
exec { commandLine '/opt/homebrew/bin/aws', 'codeartifact', 'get-authorization-token', '--domain', 'myComany', '--domain-owner', '49XXXXXXXXXX', '--query', 'authorizationToken', '--output', 'text' }
3. 为Gradle进程手动注入PATH环境变量
在项目的build.gradle中添加配置,确保Gradle进程能获取到包含AWS CLI的PATH:
// 全局为所有JavaExec任务设置PATH tasks.withType(JavaExec) { environment 'PATH', "/opt/homebrew/bin:/usr/local/bin:$System.env.PATH" } // 若为自定义任务调用AWS命令,可单独在任务内设置 task fetchCodeArtifactToken { doLast { exec { environment 'PATH', "/opt/homebrew/bin:/usr/local/bin:$System.env.PATH" commandLine 'aws', 'codeartifact', 'get-authorization-token', '--domain', 'myComany', '--domain-owner', '49XXXXXXXXXX', '--query', 'authorizationToken', '--output', 'text' } } }
注意替换路径为你实际获取到的AWS CLI路径。
4. 修改gradlew启动脚本
打开项目根目录下的gradlew文件,在exec "$JAVACMD" "$@"行之前添加以下内容,确保每次启动Gradle时都加载正确的PATH:
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
内容的提问来源于stack exchange,提问作者Abu Saleh Musa
相关产品推荐
相关产品推荐

