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