通过将"-lib foo.jar“指定给ant,我得到了将foo.jar中的类添加到ant类加载器中的行为,并且可以用于带有类名参数的各种任务。
我希望能够指定相同的行为,但只能在build.xml内部指定(因此我们可以在普通蚂蚁上这样做)。
对于任务防御,我们的功能代码如下所示:
<taskdef resource="net/sf/antcontrib/antlib.xml" description="for/foreach tasks">
<classpath>
<pathelement location="${active.workspace}/ant-contrib-1.X/lib/ant-contrib.jar" />
</classpath>
</taskdef>其中的定义完全是从ant-contrib.jar列出的。
“全球”蚂蚁类路径的等效机制是什么?
(我认为这是让<javac>使用ecj-3.5.jar在JRE - build.xml上编译的方法--以与ant1.7兼容的方式进行编译。欢迎提出更好的建议:)
编辑:看来,即将发布的ant4eclipse 1.0版包括欧洲法院.这并不能回答问题,但可以解决我的基本问题。
发布于 2010-04-13 22:27:33
如果您决定迁移到Ant 1.8,可以使用以下构造:
<import>
<javaresource name="resource_name.xml">
<classpath location="path_to_jar.jar" />
</javaresource>
</import> 发布于 2010-03-03 17:35:04
我已经给出了你联系的问题的答案。我在这里重复一个一般的解决方案。
阅读通过Java运行Ant,我认为您可以编写一个简单的包装器,正确设置类路径并将任何第三方库添加到生成的类路径中。
在这里,我只是从上面的链接中剪切和粘贴示例,并将库添加到类路径中:
<java
classname="org.apache.tools.ant.launch.Launcher"
fork="true"
failonerror="true"
dir="${sub.builddir}"
timeout="4000000"
taskname="startAnt"
>
<classpath>
<pathelement location="${ant.home}/lib/ant-launcher.jar"/>
<pathelement location="/path/to/3rd-party-lib.jar"/>
</classpath>
<arg value="-buildfile"/>
<arg file="${sub.buildfile}"/>
<arg value="-Dthis=this"/>
<arg value="-Dthat=that"/>
<arg value="-Dbasedir=${sub.builddir}"/>
<arg value="-Dthe.other=the.other"/>
<arg value="${sub.target}"/>
</java>我认为您甚至可以通过引用${ant.file}来重用同一个构建文件,只需给出一个不同的目标作为入口点。
编辑
我认为这个解决办法只应作为最后的措施。如果任务通常支持<classpath>标记,则在本地向该特定任务添加所需的库。在你的问题中,你给出了一个很好的例子--蚂蚁taskdef。
https://stackoverflow.com/questions/2369908
复制相似问题