如何根据Gradle构建需要处理密码提示?

时间:2016-07-13 15:06:59

标签: gradle

我有一个相当复杂的Gradle构建过程,其中一步需要与服务进行通信,我需要一个特殊的令牌文件。我可以手动生成此令牌文件,但我想将其添加到我的构建中,以便在没有令牌文件时提示用户提供其凭据。

我引用了以下有关此内容的博文:https://www.timroes.de/2014/01/19/using-password-prompts-with-gradle-build-files/,但它遗漏了一个小细节。我不想无条件地提示用户提供他们的凭据;如果需要创建令牌文件,我只想提示它们。

我们说我有以下任务:

task createToken(type: Exec) {
    dependsOn userCredentialPrompt
    outputs.file 'creds.token'
    environment 'USERNAME', project.username
    environment 'PASSWORD', project.password
    executable './create_token_file'
}

task somethingRequiringToken {
    dependsOn: createToken
    inputs.file 'creds.token'
    // Other task-specific configuration here.
}

userCredentialPrompt任务是提示用户提供凭据并将project.usernameproject.password分配给正确值的任务(使用上面链接的博客文章等逻辑)。< / p>

这里的问题是用户名和密码都为空。我很确定我理解其原因。它们在配置时设置,但用户凭据的提示在执行时发生。也就是说,我不知道让Gradle行事的正确方法,以便发生以下情况:

  • 执行somethingRequiringToken时,如果缺少creds.token文件,则会运行createToken

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

  • 执行createToken时,系统会提示用户提供凭据。

  • 获取用户凭据后,会将其(合理安全地)传递给生成creds.token文件的外部可执行文件。

0 个答案:

没有答案