我在 gralew 中使用以下命令在本地使用 aws 代码工件。
"aws codeartifact get-authorization-token --domain myComany --domain-owner 49XXXXXXXXXX --query authorizationToken --output text"
我有来自 openjdk 的 Java 11 和 17。对于 gradlew 7.4.2 的 java 17 项目,它可以正常工作。但是使用 gradlew 6.3 的 java 11 项目,我收到以下错误:
Caused by: java.io.IOException: Cannot run program "aws": error=2, No such file or directory
aws cli 在终端上工作正常,并且 JAVA_HOME 设置为 11。 我使用的是配备 m1 芯片和 Ventura 13.4.1 的 Mac
关于如何解决这个问题有什么想法吗?
对于 Gradle 版本 6.X,您可以在
gradle.properties
文件中使用自定义 gradle 属性,例如 aws.cli.path=/usr/local/bin/aws
,然后在 build.gradle
中将其用作 def awscli = project.property("aws.cli.path")
。
这是我们使用 Gradle 6.3 的旧项目的工作示例,在使用 m1 芯片的 Mac 上进行了测试:
repositories {
mavenCentral()
maven {
url 'https://accountAlias-1234567890.d.codeartifact.us-east-1.amazonaws.com/maven/repositoryName/'
credentials {
username "aws"
def awsProfile = project.property("aws.profile")
def awscli = project.property("aws.cli.path")
def base = "$awscli codeartifact get-authorization-token --domain lancellot --domain-owner 1234567890 --region us-east-1 --query authorizationToken --output text"
def command = awsProfile ? "$base --profile $awsProfile" : base
def process = command.execute()
process.waitFor()
def token = process.text.trim()
password token
}
}
}