2011-04-28 11 views
8

Dada la muy pobre documentación sobre scp/ssh y maven probé diferentes enfoques, básicamente cayendo en dos categorías principales: usando scpexe wagon y scp wagon. Por lo general, ambos funcionan sin problemas tanto en Linux como en Mac, pero en Windows nunca encontré la manera de hacerlo funcionar en todas las máquinas.¿Hay alguna forma de que maven scp wagon funcione consistentemente en la plataforma Linux/Mac/Windows?

enfoque scpexe (después de instalar la masilla completa y añadiendo a la trayectoria) - Configuración settings.xml: enfoque

<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> 

También probé poniendo a StrictHostKeyChecking " no ", pero, aparte de los riesgos de seguridad, no funcionó en una máquina en particular.

¿Alguien ha encontrado una forma de utilizar un repositorio ssh interno de manera consistente en todas las máquinas?

Respuesta

10

El Maven SSH wagon utiliza JSch, la implementación de Java puro de SSH, que funciona independientemente del sistema operativo. (Tal vez ese no era el caso cuando esta pregunta se publicó originalmente, pero es verdad ahora). La documentación Deploy Plugin todavía tiene una guía llamada Deployment of artifacts in an external SSH command, pero este enfoque ya no es necesario.

Aquí hay una configuración de muestra que utilicé con éxito para implementar sobre SCP a una caja de Linux desde un sistema Windows 7 con Maven 3.0.4.

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

gracias; No puedo probarlo, ya que ya no estoy en ese proyecto (¡y nos mudamos de maven a hormiga + hiedra, de todos modos!) –

+3

en algún lugar que leo 'scpexe: //' en url elegirá 'sshExecutable' en lugar de JSch . pero eso ya no funciona desde el vagón 1.0-beta4, wagon-ssh 1.0. Quería usar plink/pscp para poder usar la clave pública cargada por Peagent pero no pude encontrar una manera de hacer que maven use eso. en su lugar terminé exportando .ppk al formato openssh y suministrando a través de '' bajo '' en 'settings.xml' – mzzzzb

+0

Cuando pruebo esto con wagon-ssh 2.3-2.5, obtengo esta excepción: com.jcraft.jsch. JSchException: Fallo de negociación del algoritmo Con la versión 2.6-2.10 obtengo esto: com.jcraft.jsch.JSchException: rechazo HostKey: nombre de host – ropo

Cuestiones relacionadas