Maven copia el archivo local al servidor remoto usando SSH

¿Puede Maven copiar el archivo local en un 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.

Maven-deploy-plugin le permite configurar la fase de despliegue para implementar en un servidor usando scp. Hay una página en la documentación 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 repository 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).

¿Por qué no utilizar la tarea Ant SCP , que se puede ejecutar dentro de Maven?

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:

   org.apache.maven.wagon wagon-ssh 2.8   

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 syntax de ant normal que usaría en build.xml.

Aunque esta pregunta no es exactamente nueva, hoy me encuentro en una situación similar. Mi objective 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 ants 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:

          

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:

    org.codehaus.mojo wagon-maven-plugin 1.0   upload-to-myserver deploy  upload-single   ${project.build.directory}/${project.build.finalName}.war scp://username@myserver/path         org.apache.maven.wagon wagon-ssh 2.8    

La etiqueta es opcional. Puede ejecutar solo la ejecución de carga con el comando:

 mvn wagon:upload-single@upload-to-myserver