указание пути к классу для встроенных задач муравья - PullRequest
4 голосов
/ 29 марта 2010

Я использую атрибут classpath в пользовательских задачах Ant, чтобы сообщить Ant, где найти jar внешней задачи, но как мне сделать то же самое для встроенных задач?

В моем случае я хотел бы убедиться, что ant использует мою копию jsch.jar для задачи scp, а не ту, которая уже установлена ​​в системе. Есть ли способ, которым я могу <scp>, гарантируя, что он использует мой jsch.jar?

Ответы [ 3 ]

1 голос
/ 29 марта 2010

Я думаю, что лучший способ сделать это - определить свою собственную задачу, а не возиться с предопределенными задачами.

<taskdef name="myscp" class="..." classpath="jsch.jar"/>

<myscp .../>
1 голос
/ 15 октября 2010

У меня была точно такая же проблема, и вот что я сделал: используйте Google Jar Jar , чтобы изменить названия пакетов. Вот build.xml, который я использовал:

<project name="Admin WAS Jython" default="jar">
<target name="jar" >
    <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
        classpath="jarjar-1.0.jar"/>
    <jarjar jarfile="dist/ant-jsch-copy.jar">
        <zipfileset src="ant-jsch.jar"/>
        <rule pattern="org.apache.tools.ant.taskdefs.optional.ssh.**" result="org.apache.tools.ant.taskdefs.optional.ssh.copy.@1"/>
    </jarjar>
</target>

Тогда в вашем проекте Ant используйте следующее:

<taskdef name="scp2"
classname="org.apache.tools.ant.taskdefs.optional.ssh.copy.Scp"
classpath="ant-jsch-copy.jar;jsch-0.1.43.jar"/>

и используйте задачу scp2 вместо scp

1 голос
/ 29 марта 2010

Если ваш вызов ant использует $ANT_HOME, вы можете использовать только для этого вызова ant специальное значение ANT_HOME для пользовательской установки ant, где вы убедитесь, что ваш $ANT_HOME/lib содержит правильную копию ant-jsch.jar.
См. ТАК вопрос для более.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...