2011-04-28 54 views
8

考慮到關於scp/ssh和maven的非常差的文檔,我嘗試了不同的方法,基本上分爲兩大類:使用scpexe wagon和scp wagon。通常他們在Linux和Mac上都沒有問題,但在Windows上我從來沒有找到一種方法讓它在所有機器上都能正常工作。是否有任何方式讓maven scp wagon在linux/mac/windows平臺上始終如一地工作?

scpexe辦法(安裝完成膩子和增加通道後) - settings.xml的配置:

<server> 
    <id>internal</id> 
    <username>******</username> 
    <password>*******</password> 
    <configuration> 
     <sshExecutable>plink</sshExecutable> 
     <scpExecutable>pscp</scpExecutable> 
    </configuration> 
</server> 

SCP方法 - settings.xml中:

<server> 
     <id>internal</id> 
     <username>*********</username> 
     <password>*********</password> 
     <configuration> 
      <StrictHostKeyChecking>ask</StrictHostKeyChecking> 
     </configuration> 
</server> 

我也試圖把StrictHostKeyChecking爲「不「,但是,除了安全風險外,在特定機器上無法使用。

有人發現一種方法可以在所有機器上始終如一地使用內部ssh存儲庫嗎?

回答

10

Maven SSH wagon使用JSch,SSH的純Java實現,它可以在任何操作系統下工作。 (當這個問題最初發布時,情況可能並非如此,但現在是這樣。)Deploy Plugin文檔仍然有一個名爲Deployment of artifacts in an external SSH command的指南,但這種方法不再必要。

下面是一個示例配置,我成功用於將SCP部署到使用Maven 3.0.4的Windows 7系統上的Linux機箱。

pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>hello</groupId> 
    <artifactId>hello</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 

    <name>Hello</name> 

    <build> 
    <extensions> 
     <extension> 
     <groupId>org.apache.maven.wagon</groupId> 
     <artifactId>wagon-ssh</artifactId> 
     <version>2.3</version> 
     </extension> 
    </extensions> 
    </build> 

    <distributionManagement> 
    <repository> 
     <id>my-ssh-repo</id> 
     <url>scp://my.server.url/path/to/ssh-repo</url> 
    </repository> 
    </distributionManagement> 

</project> 

settings.xml

<settings> 
    <servers> 
    <server> 
     <id>my-ssh-repo</id> 
     <username>myUser</username> 
     <password>myPass</password> 
    </server> 
    </servers> 
</settings> 
+1

感謝;我無法嘗試,因爲我不再在那個項目上(並且我們從maven轉移到ant + ivy,無論如何!) – 2013-01-29 10:07:11

+3

我讀了'scpexe://'在url中的某個地方會選擇'sshExecutable'而不是JSch 。但不再適用於旅行車1.0-beta4,wagon-ssh 1.0。我想使用plink/pscp,這樣我就可以使用Peagent加載的公鑰,但是找不到一種方法讓maven使用它。而是我最終導出.ppk爲openssh格式並通過'settings.xml'中的''下的''提供 – mzzzzb 2013-06-24 08:00:07

+0

當我用wagon-ssh 2.3-2.5試試這個時,我得到這個異常:com.jcraft.jsch。 JSchException:算法協商失敗 使用版本2.6-2.10我得到這個:com.jcraft.jsch.JSchException:拒絕HostKey:主機名 – ropo 2016-10-25 06:38:14

相關問題