Para asegurar que su compilación sea más multiplataforma, le sugiero usar la administración de dependencias. El ivy plug-in puede instalar automáticamente la versión del complemento de su compilación en tiempo de compilación.
Este enfoque significa que el último frasco que necesitará para instalar en su lib ANT es hiedra 2.2.0.jar :-)
Primera declarar dependencias de su proyecto en el archivo ivy.xml
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="demo"/>
<configurations>
<conf name="anttask" description="Jars implementing ANT tasks"/>
</configurations>
<dependencies>
<dependency org="com.jcraft" name="jsch" rev="0.1.42" conf="anttask->default"/>
</dependencies>
</ivy-module>
Dentro de su build.xml plazo de hiedra y utilizarla para rellenar una ruta de clases personalizado basado en la configuración de la hiedra:
<target name='init' description='Resolve project dependencies and set classpaths'>
<ivy:resolve/>
<ivy:cachepath pathid="anttask.path" conf="anttask"/>
</target>
Finalmente, en otra parte de su compilación, declare sus tareas ANT utilizando la ruta de clase que ahora se rellena automáticamente con ivy.
<target name='dosomething' depends="init">
<taskdef name="sshexec"
classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec"
classpathref="anttask.path"/>
..
..
</target>
Este enfoque funciona para todos los plug-ins ANT, la mayoría de los cuales están disponibles en el repositorio central de Maven. El segundo beneficio es que es fácil actualizar las versiones de los complementos en todas las construcciones.
¿Has probado tu muestra del código de la hormiga? No veo una razón por la que no debería funcionar. Lo uso de la misma manera para otras tareas. – Robert
No digo que no funcione, funciona, pero tengo que agregar jsch.jar en el directorio ant lib, que quiero evitar. Disculpas, si mi pregunta no dice eso correctamente. Tenemos una tarea como esta { \t } Para que esto funcione, tengo que agregar jsch.jar en lib manualmente. ¿Puedo evitar eso poniendo algo en el archivo de compilación –
Ravi
? El fragmento que ha eliminado también funciona si el jsch.jar no está en el directorio lib. Luego debe asegurarse de especificar la ruta correcta relativa o absoluta a la misma. – Robert