#android #maven #ssh #android-gradle-plugin #build.gradle
#Android #maven #ssh #android-gradle-плагин #build.gradle
Вопрос:
Я пытаюсь загрузить свою библиотеку в частное репозиторий maven в нашей компании. Я могу получить доступ к серверу / репозиторию через ssh со своего терминала mac / Linux, но я не могу настроить wagen-ssh (2.2) для загрузки его в репозиторий.
я написал задачу gradle, как описано здесь: https://docs.gradle.org/current/userguide/maven_plugin.html
configurations {
deployerJars
}
dependencies {
...
deployerJars 'org.apache.maven.wagon:wagon-ssh:2.2 '
}
uploadArchives {
repositories {
mavenDeployer {
configuration = configurations.deployerJars
repository(url: "scp://{server}/var/www/maven") {
authentication(userName: "myUsername", password: "myPassword")
}
pom.version = '0.1.0'
pom.groupId = 'com.mycompany'
pom.artifactId = 'mylib'
}
}
}
Но каждый раз, когда я пытаюсь выполнить задачу gradle, я получаю сообщение об ошибке:
Не удалось развернуть артефакты: не удалось передать артефакт com.mycompany:mylib:aar: 0.1.0 с / на удаленный (scp://{server}/var/www / maven): хост неизвестен и не был принят конфигурацией: {server}
Я думаю, что wagon использует собственный внутренний ssh-клиент. Как я могу сказать этому клиенту принять мой хост или принять любой хост ?! Или я ошибаюсь, и есть другая проблема?
Ответ №1:
Хорошо, я сам нашел решение: запись в файле known_hosts для моего сервера была с
ecdsa-sha2-nistp256
но ssh-клиент wagon понимает только rsa. Итак
ssh -o HostKeyAlgorithms=ssh-rsa-cert-v01@openssh.com,ssh-rsa {yourhost}
творит волшебство.
Комментарии:
1. Это было действительно полезно. Спасибо. Он по-прежнему терпит неудачу даже с версией 3.4.0
Ответ №2:
Это намного проще, если вы используете «ssh-внешнюю» зависимость и «scpexe» в качестве протокола. Затем процесс gradle использует тот же ssh, который вы используете в своем терминале, и, следовательно, будет принимать любой ssh-ключ, который выполняет ваша обычная ssh-программа:
dependencies {
bootArchives "org.apache.maven.wagon:wagon-ssh-external:3.4.0"
}
uploadBootArchives {
repositories.mavenDeployer {
configuration = configurations.bootArchives
repository(url: "scpexe://yourhost/yourdir//")
}
}