【问题标题】:Add user libraries to Ant Builder classpath将用户库添加到 Ant Builder 类路径
【发布时间】:2011-04-08 18:17:45
【问题描述】:

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

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

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

【问题讨论】:

    标签: java eclipse ant classpath


    【解决方案1】:

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

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

    您添加的 JAR 文件将被贡献给在 Eclipse 下运行的任何 Ant 进程。

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

    编辑 2014 年 2 月:事实证明,已请求将用户库添加到 Ant 的类路径 (https://bugs.eclipse.org/bugs/show_bug.cgi?id=211669)。从外观上看,我是重新打开它的那个人……

    【讨论】:

      【解决方案2】:

      我不确定这是否会对您有所帮助,但我喜欢在这种情况下使用 Ivy。我有一个自定义的 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" />
      ...
      

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

      【讨论】:

        【解决方案3】:

        手动添加新的用户/外部 jar 很麻烦 - 你是对的。

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

        转到Window &gt; Preferences,然后在左侧窗格中选择Ant &gt; Runtime。选择窗口右侧的Ant Home 按钮并选择您的独立Ant 安装的根目录。 Eclipse 将更新主窗格中的 Ant Home Entries 以使用此安装。我在这里使用的是 Eclipse Juno - 其他版本的说明可能略有不同。

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

        我想感谢 Qasim Rasheed 在他的博客 http://www.qasimrasheed.com/post.cfm/eclipse-configure-ant-home 中向我展示了这种方法。这比手动替换 Ant Home Entries 要好得多(这会导致每次添加新 jar 时都必须在此屏幕上更新)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-10
          • 2019-02-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-22
          • 1970-01-01
          相关资源
          最近更新 更多