Загрузка в частное репозиторий maven с помощью apache maven wagon ssh | Неизвестный хост

#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//")
    }
}