OSGi: как использовать PuTTY scp с maven-bundle-plugin
Я хочу развернуть скомпилированный Maven OSGi-пакет в мой удаленный OSGi-репозиторий. Я на Windows 7 и использую maven-bundle-plugin (2.3.7) из затмения. Репозиторий находится в Linux и доступен через ssh.
Я настроил в settings.xml
использовать plink
а также pscp
(Putty tools) для работы с ssh. В <distributionManagement>
Я установил URL репозитория, который начинается с scpexe://
Цель maven-deploy работает нормально и загружает файлы jar и metadata.xml в хранилище.
Теперь я также хочу, чтобы метаданные OBR создавались и загружались. Таким образом, я добавляю в конфигурацию maven-bundle-plugin, <remoteOBR>my-repository</remoteOBR>
(это тот же идентификатор, что и хранилище в <distributionManagement>
,
При выполнении развертывания (после успешного завершения фазы развертывания maven) я получаю сообщение об ошибке.
[ОШИБКА] Не удалось выполнить цель org.apache.felix:maven-bundle-plugin:2.3.7:deploy (default-deploy) в загрузчике проекта: Ошибка передачи: Код выхода: 1 - scp не распознается как внутренний или внешняя команда, работающая программа или командный файл.
-> [Помощь 1]
Это означает, что maven-bundle-plugin не использует pscp
команда, указанная в файле settings.xml, а не "scp", которая недоступна в пути.
Как я могу настроить плагин maven-bundle-plugin для загрузки данных OBR, используя PuTTY's pscp?
1 ответ
В конце концов я нашел рабочее решение:
- не используйте внешний инструмент ssh (PuTTY), а только внутреннюю реализацию ssh/scp maven
- таким образом, используйте wagon-ssh (не wagon-ssh-external)
- добавить имя пользователя, расположение закрытого ключа и фразу-пароль в settings.xml (к сожалению, не могу использовать Pageant, но должен жестко закодировать мою фразу-пароль в settings.xml (beuh))
Таким образом, POM выглядит так (заметьте, для URL используется протокол scp://)
<project>
...
<distributionManagement>
<repository>
<id>my-repository</id>
<url>scp://repo.myserver.com/path/to/repo/</url>
</repository>
</distributionManagement>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
<configuration>
...
<remoteOBR>my-repository</remoteOBR>
</configuration>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.5</version>
</extension>
</extensions>
</build>
...
И settings.xml (который находится в C:\Users\myUsernameOnWindows\.m2\)
<settings>
<servers>
<server>
<id>my-repository</id>
<username>myUsernameOnRepo</username>
<privateKey>C:/path/to/private/key/id_rsa</privateKey>
<passphrase>myPrivateKeyPassphrase</passphrase>
</server>
</servers>
</settings>