指定内置ant任务的类路径

时间:2010-03-29 06:34:16

标签: java ant ssh

我在自定义Ant任务中使用classpath属性告诉Ant在哪里找到外部任务jar,但是如何对内置任务执行相同的操作呢?

在我的情况下,我想确保ant使用我的jsch.jar副本作为scp任务,而不是我已经在系统上安装的副本。有什么方法可以<scp>同时保证它使用我的jsch.jar吗?

3 个答案:

答案 0 :(得分:1)

如果您的蚂蚁电话使用$ANT_HOME,您可以仅使用该蚂蚁电话为自定义蚂蚁安装调用特殊ANT_HOME值,以确保您的$ANT_HOME/lib包含正确的副本ant-jsch.jar 有关详情,请参阅此SO question

答案 1 :(得分:1)

我认为最好的方法是定义自己的任务,而不是搞乱预定义的任务。

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

<myscp .../>

答案 2 :(得分:1)

我遇到了完全相同的问题,这就是我所做的:使用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