「mavenDeployer」を使用して、「uploadArchives」タスク中に wagon ssh ユーティリティで ssh/scp を使用しています。
build.gradle にパスワードをコーディングするのではなく、適切な ssh セットアップに依存したいと思います。具体的には、ユーザーに自分の秘密鍵を指定してもらい、その秘密鍵を自分の環境 (ssh-agent、ssh-add など) に読み込ませたいと考えています。Maven リポジトリには共有ユーザー ID があり、すべての実際のユーザーは、共有ユーザー ID の「authorized_keys」ファイルに .pub キーが適切に追加されています。
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:
ご覧のとおり、キーのパスフレーズは要求されません。