76

从 Eclipse 中,我发现我可以轻松地为我的项目导出 Ant 构建文件。它提供了对 3rd 方库和一些基本目标的引用。我正在从我的全局构建文件中使用它。唯一困扰我的是,如果项目结构中的某些内容被修改(比如添加新的 3rd 方库),我们必须考虑(是的,有时这可能很难!)重新生成 build.xml 文件。我想知道这里是否有人知道自动更新它的方法。“自动”是指每次需要时都不需要明确要求 Eclipse 重新生成它。虽然不知道是什么触发...

对此有任何想法或知识吗?

谢谢!

乔丹

4

7 回答 7

69

右键单击一个 Eclipse 项目,然后单击“导出”,然后单击“常规”,然后单击“Ant 构建文件”。我认为不可能自定义输出格式。

于 2010-11-15T16:32:46.167 回答
5

我自己也一直在尝试做同样的事情。我发现“Export Ant Buildfile”在 org.eclipse.ant.internal.ui.datatransfer.AntBuildfileExportPage.java 文件中启动。这位于 org.eclipse.ant.ui 插件中。

要查看源代码,请使用 Plug-in Development 透视图并打开 Plug-ins 视图。然后右键单击 org.eclipse.ant.ui 插件并选择 import as > source project。

我的计划是创建一个 Java 程序,以编程方式启动 ant 构建文件生成,并在每次构建时通过将 ant 文件添加到我的项目的构建器(在项目的构建器下右键单击首选项)在 Ant 文件中调用它标签)。

于 2011-09-22T15:15:37.103 回答
4

我遇到了同样的问题,我们的工作环境是基于 Eclipse Java 项目的,我们需要自动构建一个 ANT 文件,以便我们可以使用持续集成服务器(在我们的例子中是 Jenkins)。

我们推出了我们自己的 Eclipse Java to Ant 工具,现在可以在 GitHub 上找到它:

ant-build-for-java

要使用它,请致电:

java -jar ant-build-for-java.jar <folder with repositories> [<.userlibraries file>]

第一个参数是包含存储库的文件夹。它将递归搜索文件夹中的任何.project文件。该工具将build.xml在给定文件夹中创建一个。

可选地,第二个参数可以是从 Eclipse 导出的 .userlibraries 文件,当任何项目使用 Eclipse 用户库时都需要该文件。该工具仅在使用相对路径的用户库中进行了测试,这就是我们在 repo 中使用它们的方式。这意味着项目所需的 JAR 和其他档案位于 Eclipse 项目中,并从那里引用。

该工具仅支持来自其他 Eclipse 项目和 Eclipse 用户库的依赖项。

于 2015-04-29T02:15:00.227 回答
2

查看项目中的 .classpath 文件,它可能包含您想要的大部分信息。最简单的选择可能是滚动您自己的“build.xml 导出”,即在构建过程中将 .classpath 处理为新的 build.xml,然后使用 ant 子任务调用它。

对我来说,解析一点 XML 听起来比挂钩到 Eclipse JDT 容易得多。

于 2010-11-19T20:59:54.397 回答
2

我是将 Ant 导出过滤器捐赠给 Eclipse 的人。我添加了自动导出功能,但仅限于我的个人插件eclipse2ant,我仍然维护它以协调错误修复。

不幸的是,我没有时间将它合并到官方的 Eclipse 版本中。

于 2014-02-20T20:38:56.607 回答
2

如果您只需要类路径条目,我会执行以下操作来使用 eclipse 构建路径。

<xmlproperty file=".classpath" collapseAttributes="true" delimiter=";" />

然后在路径中设置该值

<path id="eclipse.classpath">
    <pathelement path="${classpath.classpathentry.path}"/>
</path>


<target name="compile" depends="init">

    <javac srcdir="${src}" destdir="${build}" updatedProperty="compiled">
        <classpath refid="eclipse.classpath"/>
    </javac>
</target>
于 2014-04-09T16:29:38.010 回答
0
于 2017-12-19T01:09:07.787 回答