我在为Eclipse项目设置Ant Builder时遇到问题。
我确实在Eclipse中将几个第三方库配置为用户库。这些库被添加到我的项目的构建路径中,一切正常。
我的问题是,如果我想从Eclipse使用Ant Builder,我将不得不将一些用户库添加到Ant Builder的类路径中以使其正常工作。我需要那些Libs,因为它们包括几个任务defs和类型defs for Ant,而不是编译我的项目。但是,如何将这些用户库添加到Ant Builder类路径中?我不想通过手动添加它们来“硬编码”它们,因为如果我将来必须更改一个这些库,我还必须维护所有的Ant Builders。而且我不知道负载如何在运行时在Ant中确定用户库的路径以动态加载它们,因为我需要在Ant的引导程序中使用这些库来成功定义我需要的Ant任务。
答案 0 :(得分:10)
在这种情况下,您可能希望将JAR文件(包含taskdefs)添加到Ant运行时。
窗口 - >首选项,从左侧选择“Ant - > Runtime”。关注“全局条目”,然后使用右侧的“添加JAR”按钮添加JAR文件。
您添加的JAR文件将提供给在Eclipse下运行的任何Ant进程。
您的下一个问题可能是 - “为什么我必须添加JAR?我不能添加我的用户库吗?”。好问题,很高兴你(几乎要)问。也让我疯狂,我不知道Eclipse为什么不提供这个功能。也许是时候打开一个功能请求......
编辑 2014年2月:事实证明已经请求将用户库添加到Ant的类路径(https://bugs.eclipse.org/bugs/show_bug.cgi?id=211669)。从它的外观来看,我是那个重新打开它的人......
答案 1 :(得分:1)
我不确定这对你有帮助,但我喜欢在这种情况下使用常春藤。我有一个自定义的ant扩展,我包含这种方式:
的build.xml:
<project name="project" basedir="." default="deploy" xmlns:ivy="antlib:org.apache.ivy.ant" xmlns:myNamespace="antlib:org.company.module">
<property file="build.${user.name}.properties" />
<property file="build.${env.COMPUTERNAME}.properties" />
<property file="build.properties" />
<property file="build-base.properties" />
<taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" />
<!-- Configuration for external ant libs -->
<property name="apache.ant.ext.lib" value="${target.root}/antlib" />
<mkdir dir="${apache.ant.ext.lib}" />
<ivy:retrieve inline="true" pattern="${apache.ant.ext.lib}/[artifact]-[revision]-[type].[ext]"
conf="master" organisation="org.company" module="module" revision="1.0" />
<path id="apache.ant.ext.lib.classpath">
<fileset dir="${apache.ant.ext.lib}" includes="*.jar" />
</path>
<taskdef classpathref="apache.ant.ext.lib.classpath" resource="path/to/antlib.xml" />
...
然后你的libs将被检索到你的临时ant ext lib文件夹中,供ant在运行时使用,但是会从你的项目中排除。 Eclipse有一个Ivy(IvyDE)插件,这种技术让我的生活更加简单。
答案 2 :(得分:0)
手动添加新的用户/外部罐子很麻烦 - 你是对的。
我发现避免必须这样做的最好方法是将ANT_HOME从与Eclipse捆绑在一起的Ant更改为可以在任何IDE,命令行等中使用的独立Ant安装。
转到Window > Preferences
,然后在左侧窗格中选择Ant > Runtime
。选择窗口右侧的Ant Home
按钮,然后选择独立Ant安装的根目录。 Eclipse将非常友好地更新主窗格中的Ant Home Entries以使用此安装。我在这里使用Eclipse Juno - 其他版本的说明可能略有不同。
现在可以从build.xml文件访问任何放入ANT_HOME / lib的jar,而无需手动将它们添加到类路径中。
我想赞扬Qasim Rasheed在http://www.qasimrasheed.com/post.cfm/eclipse-configure-ant-home的博客中向我展示了这种方法。它比手动替换Ant Home Entries要好得多(这会导致每次添加新jar时都必须在此屏幕上更新)。