Gradlew 找不到 aws cli

问题描述 投票:0回答:1

我在 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

关于如何解决这个问题有什么想法吗?

amazon-web-services gradle aws-cli java-11 gradlew
1个回答
0
投票

对于 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
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.