我正在使用“mavenDeployer”在“uploadArchives”任务期间使用 ssh/scp,并使用 wagon ssh 实用程序。
我不想将密码编码到 build.gradle 中,而是依赖正确的 ssh 设置。具体来说,我想让用户指定他们的私钥,并将该私钥加载到他们的环境中(ssh-agent、ssh-add 等)。maven repo 有一个共享用户标识,所有真实用户都将他们的 .pub 密钥正确添加到共享用户标识的“authorized_keys”文件中。
虽然 maven/ant 似乎有一个“privateKey”属性,并且 Gradle DSL 接受它,但是当我设置它时它似乎没有任何效果:
mavenDeployer {
configuration = pr.configurations.publishJars
String keyFile = System.properties["user.mavenKey"]
repository(url: "scp://maven.company.com/path/to/maven") {
logger.info("Using SSH key: ${keyFile}")
authentication(userName: "maven", privateKey: keyFile)
}
如果我按照 gradle 文档中的示例输入实际密码,它确实有效,所以我知道一切正常。此外,将 privateKey 更改为 privatekey(全部小写)会导致属性错误,因此我知道该属性存在并且在某种程度上被识别。
而且我知道 ssh 密钥本身正在工作:
% ssh -i ~/.ssh/mavenKey maven@maven.company.com ls /
[ no errors, output trimmed ]
但是当我运行它时,会提示我输入共享用户 ID 的密码:
% gradle uploadArchives
[... stuff ...]
Using SSH key: /homes/klash/.ssh/mavenKey
Password for maven@evomaven.englab.juniper.net:
如您所见,它不会提示输入密钥的密码。