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 ответ

Решение

В конце концов я нашел рабочее решение:

  1. не используйте внешний инструмент ssh (PuTTY), а только внутреннюю реализацию ssh/scp maven
  2. таким образом, используйте wagon-ssh (не wagon-ssh-external)
  3. добавить имя пользователя, расположение закрытого ключа и фразу-пароль в 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>
Другие вопросы по тегам