transferir servidores por password entre copiar consola comando archivos maven-2 ssh deployment

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