如何处理Gradle构建所需的密码提示?

如何处理Gradle构建所需的密码提示?,gradle,Gradle,我有一个相当复杂的Gradle构建过程,其中一个步骤需要与服务通信,为此我需要一个特殊的令牌文件。我可以手动生成这个令牌文件,但是我想将它添加到我的构建中,这样,如果令牌文件不存在,就会提示用户输入他们的凭据 我引用了以下关于这一点的博文:,但它缺少一个小细节。我不希望无条件地提示用户输入其凭据;我只想在需要创建令牌文件时提示他们 假设我有以下任务: TaskCreateToken(类型:Exec){ dependsOn用户凭证提示 outputs.file“creds.token” 环境“用户

我有一个相当复杂的Gradle构建过程,其中一个步骤需要与服务通信,为此我需要一个特殊的令牌文件。我可以手动生成这个令牌文件,但是我想将它添加到我的构建中,这样,如果令牌文件不存在,就会提示用户输入他们的凭据

我引用了以下关于这一点的博文:,但它缺少一个小细节。我不希望无条件地提示用户输入其凭据;我只想在需要创建令牌文件时提示他们

假设我有以下任务:

TaskCreateToken(类型:Exec){
dependsOn用户凭证提示
outputs.file“creds.token”
环境“用户名”,project.USERNAME
环境“密码”,project.PASSWORD
可执行文件“./create\u token\u file”
}
任务somethingRequiringToken{
dependsOn:createToken
inputs.file“creds.token”
//这里还有其他特定于任务的配置。
}
userCredentialPrompt
任务提示用户输入凭据,并将
project.username
project.password
分配给正确的值(使用上面链接的博客文章这样的逻辑)

这里的问题是用户名和密码都是空的。我很确定我明白原因。它们在配置时设置,但在执行时提示输入用户凭据。也就是说,我不知道如何让Gradle做出正确的行为,从而发生以下情况:

  • 当执行
    somethingRequiringToken
    时,如果
    creds.token
    文件丢失,它将运行
    createToken

  • 执行
    somethingRequiringToken
    时,如果
    creds.token
    文件存在,则不会执行
    createToken
    任务

  • 执行
    createToken
    时,系统会提示用户输入其凭据

  • 当获取用户凭据时,它们被(合理地安全地)传递到生成
    creds.token
    文件的外部可执行文件


对不起,我不明白,问题是什么?用户名和密码为空?你能分享一个重现问题的
build.gradle
吗?@Opal我理解用户名和密码为空的原因。我只是不知道如何将环境变量的配置时设置移动到运行时,从而保持任务只在需要时运行的能力。本质上,问题是,“我如何让Gradle按照我写的四个要点中的行为行事?”对不起,但我不明白,问题是什么?用户名和密码为空?你能分享一个重现问题的
build.gradle
吗?@Opal我理解用户名和密码为空的原因。我只是不知道如何将环境变量的配置时设置移动到运行时,从而保持任务只在需要时运行的能力。本质上,问题是,“我如何让Gradle按照我所写的四个要点中的行为行事?”