Чтобы ваша сборка стала более кроссплатформенной, я бы предложил использовать управление зависимостями.Плагин ivy может автоматически устанавливать версию плагина вашей сборки во время сборки.
Этот подход означает, что последний jar, который вам когда-либо понадобится установить в ANT lib, будет ivy-2.2.0.jar : -)
Сначала объявите зависимости вашего проекта в файле 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>
Внутри вашего build.xml запустите ivy и используйте его для заполнения пользовательского пути к классу на основе конфигурации ivy:
<target name='init' description='Resolve project dependencies and set classpaths'>
<ivy:resolve/>
<ivy:cachepath pathid="anttask.path" conf="anttask"/>
</target>
Наконец, в других местах вашей сборки объявляйте задачи ANT, используя путь к классам, теперь автоматически заполняемыйплющом
<target name='dosomething' depends="init">
<taskdef name="sshexec"
classname="org.apache.tools.ant.taskdefs.optional.ssh.SSHExec"
classpathref="anttask.path"/>
..
..
</target>
Этот подход работает для всех плагинов ANT, большинство из которых доступны в центральном репозитории Maven.Второе преимущество заключается в том, что версии плагинов можно легко обновить во всех сборках.