Java 将用户库添加到Ant Builder类路径

Java 将用户库添加到Ant Builder类路径,java,eclipse,ant,classpath,Java,Eclipse,Ant,Classpath,我在为我的Eclipse项目设置Ant Builder时遇到问题 我确实在Eclipse中配置了几个第三方LIB作为用户库。这些库被添加到我的项目的构建路径中,并且一切正常 我的问题是,如果我想使用Eclipse中的Ant Builder,我必须将一些用户库添加到Ant Builder的类路径以使其工作。我需要这些lib,因为它们包含几个任务定义和Ant的类型定义,而不是编译我的项目。但是如何将这些用户库添加到Ant Builder类路径?我不想通过手动添加来“硬编码”它们,因为如果将来我必须更

我在为我的Eclipse项目设置Ant Builder时遇到问题

我确实在Eclipse中配置了几个第三方LIB作为用户库。这些库被添加到我的项目的构建路径中,并且一切正常


我的问题是,如果我想使用Eclipse中的Ant Builder,我必须将一些用户库添加到Ant Builder的类路径以使其工作。我需要这些lib,因为它们包含几个任务定义和Ant的类型定义,而不是编译我的项目。但是如何将这些用户库添加到Ant Builder类路径?我不想通过手动添加来“硬编码”它们,因为如果将来我必须更改其中一个lib,我还必须维护所有Ant构建器。我不知道load如何在Ant中确定运行时用户库的路径以动态加载它们,因为我需要Ant引导库中的那些lib来成功定义我所需的Ant任务。

在这种情况下,您可能希望将JAR文件(包含taskdef)添加到Ant运行时

窗口->首选项,从左侧选择“Ant->Runtime”。关注“全局条目”,然后使用右侧的“添加JAR”按钮添加JAR文件

您添加的JAR文件将提供给在Eclipse下运行的任何Ant进程

您的下一个问题可能是:“为什么我必须添加JAR?我不能添加我的用户库吗?”。问得好,很高兴你(差点)被问到。也让我发疯,我不知道为什么Eclipse不提供这个功能。也许是时候打开一个功能请求了


编辑2014年2月:事实证明,已经请求将用户库添加到Ant的类路径()。从外观上看,是我重新打开的…

我不确定这是否对你有帮助,但我喜欢在这种情况下使用常春藤。我有一个定制的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" />
...

...

然后,您的lib将被检索到临时ant ext lib文件夹中,供ant在运行时使用,但将从项目中排除。Eclipse有一个Ivy插件(IvyDE),这项技术使我的生活变得更加简单。

手动添加新用户/外部JAR很麻烦-你说得对

我发现避免这样做的最好方法是将ANT_HOME从与Eclipse捆绑的ANT更改为可以从任何IDE、命令行等使用的独立ANT安装

转到
Window>Preferences
,然后在左窗格中选择
Ant>Runtime
。选择窗口右侧的
Ant Home
按钮,然后选择独立Ant安装的根目录。Eclipse将非常友好地更新主窗格中的Ant Home条目以使用此安装。我在这里使用的是EclipseJuno——其他版本的说明可能略有不同

现在,可以从build.xml文件访问掉到ANT_HOME/lib中的任何jar,而无需手动将它们添加到类路径中

我要感谢卡西姆·拉希德在他的博客上向我展示了这种方法。这比手动替换Ant Home条目要好得多(这会导致每次添加新jar时都必须在此屏幕上更新的问题)