tutorial libreria jcraft from example docs java ant ssh jsch

java - libreria - maven jcraft jsch



¿Cómo cargo la tarea opcional sshexec en Ant sin configuración? (2)

Estoy usando sshexec, que depende de jsch-0.1.48.jar. No puedo simplemente poner eso en el directorio ant / lib porque otros usuarios que deseen usar el mismo script de compilación tendrán que hacer una configuración en su máquina antes de que puedan hacerlo.

Lo que quiero hacer es poder hacer referencia a jsch-0.1.48.jar como parte del proyecto. Actualmente, lo tengo en el directorio project / libs y estoy intentando algo así como:

<property name="lib" location="lib"/> <taskdef name="sshexec" classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec"> <classpath> <pathelement location="${lib}/jsch-0.1.48.jar"/> </classpath> </taskdef> <target name="sshcmd" description="ssh command"> <sshexec host="X.X.X.X" username="USER" password="PASS" command="cmd" trust="true"/> </target>

Pero eso no está funcionando:

C:/dev/trunk/project:>ant sshcmd Buildfile: C:/dev/trunk/project/build.xml BUILD FAILED C:/dev/trunk/project/build.xml:275: taskdef A class needed by class org.apache.tools.ant.taskdefs.optional.ssh.SSHExec cannot be found: com/jcraft/jsch/Logger using the classloader AntClassLoader[C:/dev/trunk/project/lib/jsch-0.1.48.jar] Total time: 0 seconds


La tarea sshexec está integrada en ANT, no necesita invocar una operación taskdef para usarla. Lo único que falta es el jsch jar.

Esto puede instalarse usando un destino de arranque de la siguiente manera (desde Maven Central ):

<target name="bootstrap" description="Install missing jars"> <mkdir dir="${user.home}/.ant/lib"/> <get src="http://search.maven.org/remotecontent?filepath=com/jcraft/jsch/0.1.48/jsch-0.1.48.jar" dest="${user.home}/.ant/lib/jsch.jar"/> </target>

Este objetivo solo debe ejecutarse una vez, luego de lo cual la tarea ANT sshexec funcionará como se espera en la PC del desarrollador.

Actualizar

Si no desea descargar jars, otro mecanismo para pasar la ubicación de bibliotecas ANT desde la línea de comando de la siguiente manera:

ant -lib /path/to/project/lib/dir ...

Para obtener más detalles sobre la administración de bibliotecas ANT, lo remito al manual de ANT


El jsch jar está empaquetado con mi proyecto. Entonces, en lugar de descargarlo, lo estoy copiando en la biblioteca de hormigas. La compilación fallará la primera vez que se ejecute, lo cual está bien para mis propósitos. Sucederá la segunda vez porque el contenedor estará en la biblioteca y se cargará al inicio.

<target name="jschset" description="Set the jar"> <copy file="${lib}/jsch-0.1.48.jar" tofile="${ant.home}/lib/jsch-0.1.48.jar"/> </target>