2012-09-13 21 views
5

Estoy usando el complemento wagon-maven para scp mi archivo WAR al servidor. Funciona bien. Mi siguiente paso es realizar algunos comandos en el servidor (mkdir, etc.). ¿Hay algún complemento que me ayude a hacer eso? ¿Hay alguna manera de resolverlo usando wagon-maven-plugin?Ejecutar comando remoto a través de ssh usando Maven3

Soy relativamente nuevo en mvn. Cualquier ayuda sería apreciada.

¿Alguna sugerencia?

Respuesta

12

Pude ejecutar comandos ssh con exec-maven-plugin. Es un poderoso complemento maven para hacer todo tipo de hack y también ejecutar comandos. Para todos los interesados ​​en la solución

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <executions> 
    <execution> 
     <phase>install</phase> 
     <goals> 
     <goal>exec</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <executable>sh</executable> 
    <arguments> 
     <!-- Shell script location --> 
     <argument>runscript.sh</argument> 
     <!-- arg #1 --> 
     <argument>${file_1}</argument> 
    </arguments> 
    </configuration> 
</plugin> 

Otra solución que encontré fue correr experto-antRun-plugin. No lo recomendaría, ya que ejecuta tareas ANT y hay muchas dependencias. Pero es útil si necesita ejecutar tareas de hormiga a través de maven.

<plugin> 
    <inherited>false</inherited> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <version>1.6</version> 
    <configuration> 
    <target> 
     <loadproperties srcFile="deploy.properties" /> 
     <ftp action="send" server="server" 
      remotedir="https://stackoverflow.com/a/b" userid="usr" 
      password="pw" depends="no" 
      verbose="yes" binary="yes"> 
     <fileset dir="modules/my-module/target"> 
      <include name="file.zip" /> 
     </fileset> 
     </ftp> 

     <!-- calls deploy script --> 
     <sshexec host="host" trust="yes" 
       username="usr" password="pw" 
       command="sh /my/script.sh" /> 

     <!-- SSH --> 
     <taskdef name="sshexec" 
       classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec" 
       classpathref="maven.plugin.classpath" /> 
     <taskdef name="ftp" 
       classname="org.apache.tools.ant.taskdefs.optional.net.FTP" 
       classpathref="maven.plugin.classpath" /> 
    </target> 
    </configuration> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>commons-net</groupId> 
     <artifactId>commons-net</artifactId> 
     <version>1.4.1</version> 
    </dependency> 
    <dependency> 
     <groupId>ant</groupId> 
     <artifactId>ant-commons-net</artifactId> 
     <version>1.6.5</version> 
    </dependency> 
    <dependency> 
     <groupId>ant</groupId> 
     <artifactId>ant-jsch</artifactId> 
     <version>1.6.5</version> 
    </dependency> 
    <dependency> 
     <groupId>jsch</groupId> 
     <artifactId>jsch</artifactId> 
     <version>0.1.29</version> 
    </dependency> 
    </dependencies> 
</plugin> 

Hope that helps!

+0

Otra opción es la característica sshexec de wagon-maven-plugin – Josh

Cuestiones relacionadas