2011-04-28 4 views
8

scp/ssh와 maven에 대한 매우 가난한 문서를 감안할 때 기본적으로 scpexe wagon과 scp wagon을 사용하는 두 가지 주요 범주에 속하는 다른 접근 방식을 시도했습니다. 일반적으로 그들은 둘 다 리눅스와 Mac에서 문제없이 작동하지만, Windows에서는 모든 컴퓨터에서 작동하도록하는 방법을 찾지 못했습니다.linux/mac/windows 플랫폼에서 maven scp wagon이 일관되게 작동하도록하는 방법이 있습니까?

scpexe 접근 방식 (완전 퍼티를 설치하고 경로에 추가 한 후) - Settings.XML의 구성 :

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

SCP 접근 - Settings.XML이 :에 StrictHostKeyChecking 퍼팅

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

가 나는 또한 시도 " 아니오 "이지만 보안 위험은 제쳐두고 특정 컴퓨터에서는 작동하지 않습니다.

누군가 모든 기계에서 일관되게 내부 ssh 저장소를 사용할 수있는 방법을 찾았습니까?

답변

10

Maven SSH wagon은 OS와 상관없이 작동하는 SSH의 순수 Java 구현 인 JSch를 사용합니다. (이 질문이 원래 게시되었을 때의 질문은 아니지만 지금은 사실입니다.) Deploy Plugin 설명서에는 여전히 Deployment of artifacts in an external SSH command이라는 가이드가 있지만이 방법은 더 이상 필요하지 않습니다.

다음은 Maven 3.0.4가 설치된 Windows 7 시스템에서 SCP를 통해 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로 이동했다.) –

+3

어딘가에 url에서'scpexe : //'를 읽으면 JSch 대신'sshExecutable'을 선택할 것이다. . 하지만 더 이상 왜건 1.0-beta4, wagon-ssh 1.0에서는 작동하지 않습니다. 내가 Peagent에 의해로드 된 공개 키를 사용할 수 있도록 plink/pscp를 사용하고 싶었지만 그것을 사용할 수있는 방법을 찾지 못했습니다. 대신에 .ppk 파일을 openssh 형식으로 내보내고''아래의''아래에서'opensxx 형식으로 내보내는 것을 끝내기. – mzzzzb

+0

이것을 wagon-ssh 2.3-2.5로 시도하면 com.jcraft.jsch 예외가 발생합니다. JSchException : 알고리즘 협상에 실패했습니다. 버전 2.6-2.10에서는 다음과 같이 나타납니다. com.jcraft.jsch.JSchException : reject HostKey : hostname – ropo