maven ssh ant scp

maven antrun ssh o scp oculta la salida



ant maven (2)

Quiero ejecutar un comando ssh & scp usando antrun en mvn.
los comandos ssh y scp se ejecutan correctamente y se ejecutan los complementos declarados en las siguientes fases. pero la salida de todos los comandos después de ssh / scp - ¡no está escrita en ninguna salida!

¡¿Cuál es el problema?!

aquí está mi 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>group</groupId> <artifactId>artifact</artifactId> <version>0.0.0-1-SNAPSHOT</version> <name>name</name> <packaging>jar</packaging> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <id>echoKuku</id> <phase>validate</phase> <goals> <goal>run</goal> </goals> <configuration> <target> <sshexec verbose="true" output="o.txt" failonerror="false" host="${Ip}" trust="yes" username="${UserName}" command="echo kuku" keyfile="${Keyfile}" /> <taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec" classpathref="maven.plugin.classpath" /> </target> </configuration> </execution> </executions> <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> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>download-jsch</id> <phase>compile</phase> <goals> <goal>copy</goal> </goals> <configuration> <overWriteSnapshots>true</overWriteSnapshots> <artifactItems> <artifactItem> <groupId>jsch</groupId> <artifactId>jsch</artifactId> <version>0.1.29</version> <overWrite>true</overWrite> <outputDirectory>${project.build.directory}</outputDirectory> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> </plugins> </build> <properties> <javaVersion>1.7</javaVersion> <Ip>1.2.3.4</Ip> <UserName>root</UserName> <Keyfile>${user.home}/.ssh/id_rsa</Keyfile> </properties> <dependencies> <dependency> <groupId>jsch</groupId> <artifactId>jsch</artifactId> <version>0.1.29</version> </dependency> </dependencies> </project>

el archivo jsch-0.1.29.jar se creó en el directorio de destino, pero el resultado es:

C:/Users/azberger/somePath>mvn test [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building name 0.0.0-1-SNAPSHOT [INFO] ------------------------------------------------------------------------ [WARNING] The artifact jsch:jsch:jar:0.1.29 has been relocated to com.jcraft:jsch:jar:0.1.29 [INFO] [INFO] --- maven-antrun-plugin:1.6:run (echoKuku) @ artifact --- [INFO] Executing tasks main: [sshexec] Connecting to 1.2.3.4:22 kuku C:/Users/azberger/somePath>

Actualización: (16/3/16 8:11 GMT)

scp - funciona bien.
sshexec con un script de archivo (commandResource = "[file]") - funciona bien.
sshexec con un solo comando (comando = "[comando]") - causa problema, como se menciona arriba.


Pruébalo con versiones más recientes de las dependencias de JSCH (1.8.4 para ant-jsch y 0.1.53 para jsch, cada una con ID de grupo diferentes). Solucionó el problema de mi lado:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>server-copy</id> <goals> <goal>run</goal> </goals> <phase>process-sources</phase> <configuration> <target> <echo message="Pushing to host..." /> <sshexec host="hostname" username="user" trust="true" password="pass" failonerror="true" command="mkdir -p /home/user/test/test"/> <scp trust="yes" file="some-file" todir="user:pass@hostname:/path/to/some-file" /> </target> </configuration> </execution> </executions> <dependencies> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant-jsch</artifactId> <version>1.8.4</version> </dependency> <dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.53</version> </dependency> </dependencies> </plugin>


Muchas gracias. Después de dos largas noches encontré la solución.

Tenía la última versión de hormiga y no org.apache.ant que se cambió en la versión 1.6. Así que la última versión es hoy 1.10.1 y funciona muy bien.