我在自定义Ant任务中使用classpath属性告诉Ant在哪里找到外部任务jar,但是如何对内置任务执行相同的操作呢?
在我的情况下,我想确保ant使用我的jsch.jar副本作为scp任务,而不是我已经在系统上安装的副本。有什么方法可以<scp>
同时保证它使用我的jsch.jar吗?
答案 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