有啥方法可以从 Eclipse 自动生成 ant build.xml 文件?

Posted

技术标签:

【中文标题】有啥方法可以从 Eclipse 自动生成 ant build.xml 文件?【英文标题】:Any way to generate ant build.xml file automatically from Eclipse?有什么方法可以从 Eclipse 自动生成 ant build.xml 文件? 【发布时间】:2011-05-10 07:30:05 【问题描述】:

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

对此有何想法或知识?

谢谢!

乔丹

【问题讨论】:

您是否尝试过添加自定义构建器步骤? 我不确定我该怎么做。我看过项目建设者。我认为那里可能有一些东西......我可能会添加一个构建器,一旦主“Java Builder”完成,它将生成 build.xml 文件。这就是你所说的建造者步骤吗?如果我对以编程方式调用项目的 export ant buildfile 操作有任何线索,我可以试试这个。我什至怀疑这是可能的。 您好,M. Joanis,您最终找到了什么解决方案?我正在努力实现同样的目标,所以如果你能分享你的发现会很好。 您好 DMM,我还没有更新该文件。因此,我没有再费心寻找一种自动更新它的方法。鉴于文件结构简单,我可能会编写一个生成它的脚本(同时保持 IDE 和构建过程解耦)。我有很多自动生成的目标,但其中大多数在 IDE 之外都无关紧要,所以我只剩下 3-4 个主要应用程序。取决于您的具体需求... 【参考方案1】:

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

【讨论】:

抱歉,我添加了关于“自动”的注释。就像我说的,我知道我可以轻松地生成和导出这样的文件。困扰我的是每次需要执行时都必须告诉 Eclipse 重新生成它。我会对一种在我的项目上自动触发“export ant buildfile”操作的方法感兴趣。我认为输出格式没有问题(到目前为止)。 那么我认为在标准 Eclipse 中是不可能的。也许有些插件允许它...... 这似乎是为 web 项目生成 build.xml 但不是为耳朵生成的。我可以为 ear 文件自动生成 build.xml 吗? 目前这个特性存在于 Eclipse Java 插件中。您需要 Web Tools Platform 插件及其 J2EE 透视图。【参考方案2】:

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

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

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

【讨论】:

看起来很有前途。您似乎对 Eclipse 插件体系结构有很好的了解。你会很高兴让我们了解你取得的任何进展。谢谢! 更新:不幸的是,我的工作没有给我足够的时间来实现它。取而代之的是,每次我们添加新的依赖项时,团队都会重新导出构建文件,这成为了一种团队习惯。这并不理想,但它是自我执行的,因为如果有人试图在服务器上执行构建而不导出构建文件,它通常会破坏。【参考方案3】:

我也遇到过同样的问题,我们的工作环境基于 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 用户库的依赖项。

【讨论】:

【参考方案4】:

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

在我看来,解析一点 XML 比挂钩 Eclipse JDT 容易得多。

【讨论】:

我绝对同意解析 XML 文件比编写 Eclipse 插件或类似的东西更有吸引力。您的建议很有趣,但 .classpath 文件不是“有点”简洁吗?我的提供了 5 条路径,仅此而已。导出的 Ant 构建文件的优点在于它不仅提供了构建整个事物的目标,而且还提供了允许运行 JUnit 测试的正确目标。我会记住这一点的。 好点。我希望 Eclipse 在确定要在构建文件中生成哪些目标时也会考虑“项目性质”。您可以检查 Eclipse 如何生成 build.xml,因为它在内部使用 ant 本身。但这会让您回到必须做一个“科学项目”来理解这些 Eclipse 内部结构。也许 Builder 步骤确实是正确的选择。【参考方案5】:

如果您只需要类路径条目,我会执行以下操作来使用 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>

【讨论】:

【参考方案6】:

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

很遗憾,我没有时间将它合并到官方的 Eclipse 版本中。

【讨论】:

【参考方案7】: 从主菜单中选择File > Export(或右键单击项目名称并选择Export > Export…)。

在“导出”对话框中,选择 General > Ant Buildfiles,如下所示:

点击下一步。在 Generate Ant Buildfiles 屏幕中:

检查列表中的项目。 取消选中“使用 Eclipse 编译器创建目标以编译项目”选项 - 因为我们要创建一个独立于 Eclipse 的构建文件。 保留 Ant 构建文件的默认名称:build.xml

点击Finish,Eclipse会在项目目录下生成build.xml文件如下: 双击build.xml文件在Ant编辑器中打开其内容:

source

【讨论】:

以上是关于有啥方法可以从 Eclipse 自动生成 ant build.xml 文件?的主要内容,如果未能解决你的问题,请参考以下文章

使用Ant编译Eclipse源代码

有啥方法可以在 Eclipse 中获得类似 IntelliJ 的自动完成功能?

有啥方法可以从 Eclipse 的层次结构视图中隐藏测试类?

Eclipse 是不是使用自己的发行版发布 ant?

Java里面ant和maven是啥东西???两个有啥用

导出/导入 Eclipse 构建路径