maven 2 - servidores - Maven copia el archivo local al servidor remoto usando SSH
transferir archivos por ssh putty (6)
¿Por qué no utilizar la tarea Ant SCP , que se puede ejecutar dentro de Maven?
¿Puede Maven copiar el archivo local en un servidor de servidor remoto usando SSH?
Quiero especificar la ubicación en el archivo de configuración de Maven y copiar ese archivo (o archivos) al servidor cada vez que se ejecuta la fase de implementación.
Aunque esta pregunta no es exactamente nueva, hoy me encuentro en una situación similar. Mi objetivo es subir archivos y ejecutar comandos en un servidor remoto al que tengo que hacer un túnel (a través de otro servidor). Logré forjar una solución para eso con ant
(que de nuevo se puede desencadenar de maven como se menciona aquí).
sshsession
tarea de sshsession
hormigas solo crea un túnel que puede usar para las tareas dentro de. Las tareas dentro no se ejecutan automáticamente en el servidor remoto, pero puede usar la tarea sshexec
junto con el túnel para lograr eso. Además, la tarea scp
ahora puede cargarse a través del túnel al servidor remoto. Aquí hay un ejemplo:
<sshsession host="${jumphost}" port="22" username="${user}" password="${password}" trust="true">
<localtunnel lport="${localTunnelPort}" rhost="${targethost}" rport="22"/>
<sequential>
<!-- run a command on the remote server (here mkdir) -->
<sshexec host="localhost" port="${localTunnelPort}" username="${user.param}" password="${password.param}" command="mkdir ${home}/foobar" trust="true" />
<!-- upload a file to the remote server -->
<scp port="${localTunnelPort}" file="test_file.txt" todir="${user.param}:${password.param}@localhost:${home}/foobar/" trust="true" />
</sequential>
</sshsession>
Eche un vistazo al plugin Maven Wagon
Para probarlo manualmente con una simple línea de comando: mvn org.codehaus.mojo:wagon-maven-plugin:1.0:upload -Dwagon.url=scp://username:userpassword@myserver -Dwagon.fromDir=target -Dwagon.includes=*.ear -Dwagon.toDir=/home/elisabetta
En ambos casos, asegúrese de agregar la extensión SSH para Wagon a su pom.xml:
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.8</version>
</extension>
</extensions>
La misma idea que PaoloC , utilizando el plugin Maven Wagon con la extensión wagon-ssh, pero la configuración en el archivo pom y ejecutarlo en una fase específica, este ejemplo copia el archivo war en un servidor remoto con SSH:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>wagon-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<id>upload-to-myserver</id>
<phase>deploy</phase>
<goals>
<goal>upload-single</goal>
</goals>
<configuration>
<fromFile>${project.build.directory}/${project.build.finalName}.war</fromFile>
<url>scp://username@myserver/path</url>
</configuration>
</execution>
</executions>
</plugin>
<!-- other plugins ... -->
</plugins>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.8</version>
</extension>
</extensions>
</build>
La etiqueta <phase>
es opcional. Puede ejecutar solo la ejecución de carga con el comando:
mvn wagon:upload-single@upload-to-myserver
Maven no es una herramienta genérica, es una herramienta para hacer que su proceso de construcción sea reutilizable. Sugiero usar un paso incorporado de construcción antrun . En este paso, puede hacer cualquier cosa con la sintaxis de hormiga normal que usaría en build.xml.
Maven-deploy-plugin le permite configurar la fase de despliegue para implementar en un servidor usando scp. Hay una página en la documentation que describe cómo se puede hacer.
Creo que esto reemplazará el despliegue normal en lugar de agregarlo, por lo que puede que no sea lo que buscas.
Si necesita implementar en un repositorio tradicional de Maven y entregar el archivo al servidor remoto, necesitará usar la tarea scp como sugieren las otras respuestas.
En esta respuesta describí cómo configurar la tarea ftp, la tarea scp es casi idéntica, excepto que tal vez necesites agregar los atributos de clave de archivo y contraseña (y cambiar obviamente el nombre de la tarea de ftp a scp).