2014-01-21 46 views
1

我想將我的maven編譯的OSGi包部署到我的遠程OSGi存儲庫。我在Windows 7上使用eclipse中的maven-bundle-plugin(2.3.7)。該存儲庫在Linux上並通過ssh訪問。OSGi:如何使用PuTTY scp和maven-bundle-plugin

我已配置settings.xml使用plinkpscp(Putty工具)來完成ssh工作。 在<distributionManagement>我設置庫的URL,這與scpexe://

Maven的部署目標,工作正常,並上傳jar文件和metadata.xml中到倉庫開始。

現在我還想要生成和上傳OBR元數據。因此,我添加了maven-bundle-plugin的配置<remoteOBR>my-repository</remoteOBR>(與<distributionManagement>中的存儲庫的ID相同)。

當執行deploy(在maven deploy階段成功完成後),出現錯誤。

[錯誤]未能執行目標 org.apache.felix:上 項目引導程序部署(默認部署):行家束-插件:2.3.7傳輸失敗:退出碼:1 - ' scp'不被識別爲 內部或外部命令,可操作程序或批處理文件。
- > [Help 1]

這意味着maven-bundle-plugin不使用settings.xml中指定的pscp命令,而是使用路徑中不可用的「scp」命令。

如何配置maven-bundle-plugin以使用PuTTY的pscp上傳OBR數據?

回答

2

我終於找到一個可行的解決方案:

  1. 不使用外部SSH工具(膩子),但只有行家內部SSH/SCP實現
  2. 因此,用貨車-SSH(沒有車皮SSH-外部)
  3. 添加用戶名,私有密鑰的位置和密碼短語的Settings.XML(可悲的是,不能用選美,但必須我硬編碼Settings.XML中的密碼(beuh))

因此,POM看起來像(注意,SCP://協議被用於URL)

<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:\用戶\ 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>