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


76

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

有什么想法或知识吗?

谢谢!

MJ


1
您是否尝试过添加自定义构建器步骤?
凯利·法国

我不确定我该怎么做。我看过项目建设者。我认为那里可能有一些东西……我可能会添加一个生成器,一旦完成“ Java Builder”的主要工作,它将生成build.xml文件。这就是您所说的建造者步骤吗?如果我对以编程方式对项目调用export ant buildfile操作有任何线索,可以尝试一下。我怀疑是否有可能。
乔尼斯(Joanis)2010年

您好M. Joanis,您终于找到了什么解决方案?我正在努力实现同样的目标,因此,如果您可以分享您的发现,那将是很好的。
theDmi 2011年

您好DMM,我还没有更新该文件。因此,我不再费心寻找自动更新的方法。鉴于文件结构的简单性,我可能会编写一个脚本来生成它(保持IDE和构建过程同时解耦)。我有很多自动生成的目标,但是大多数目标在IDE中都没有关系,因此我只能使用3-4个主要应用程序。取决于您的特定需求...
Joanis 2011年

Answers:


69

右键单击Eclipse项目,然后依次单击“导出”,“常规”和“ Ant构建文件”。我认为虽然无法自定义输出格式。


抱歉,我在“自动”上添加了注释。就像我说的,我知道我可以轻松地生成和导出这样的文件。让我烦恼的是,每次需要执行Eclipse时都要告诉它重新生成它。我会对自动触发项目中的“ export ant buildfile”操作的方法感兴趣。到目前为止,我认为输出格式没有问题。
乔尼斯(Joanis)2010年

然后,我认为在标准Eclipse中是不可能的。也许某些插件允许它...
Guillaume

1
这似乎是为Web项目生成build.xml,但不是为耳朵生成。我可以为耳文件自动生成一个build.xml吗?
Mark W

目前,Eclipse Java插件中提供了此功能。您需要Web工具平台插件及其J2EE透视图。
纪尧姆

5

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

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

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


2
看起来是一条非常有希望的道路。您似乎对Eclipse插件架构有很好的了解。希望您能随时告知我们任何进展。谢谢!
Joanis 2011年

更新:不幸的是,我的工作没有给我足够的时间来实施它。取而代之的是,这成为团队的惯例,每次我们添加新的依赖关系时,团队都会重新导出构建文件。这不是理想的方法,但是它是自我执行的,因为如果有人尝试在服务器上执行构建而不导出构建文件,则通常会破坏它。
Tristan Ratchford

4

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

我们推出了自己的Eclipse Java to Ant工具,该工具现在可以在GitHub上使用:

Java蚂蚁构建

要使用它,请致电:

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

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

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

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


2

查看项目中的.classpath文件,该文件可能包含所需的大多数信息。最简单的选择可能是滚动您自己的“ build.xml导出”,即在构建本身期间将.classpath处理到新的build.xml中,然后使用ant子任务调用它。

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


1
我绝对同意,解析XML文件比编写Eclipse插件或类似的东西更具吸引力。您的建议很有趣,但是.classpath文件“有点”不够简洁吗?我的提供5条路径,仅此而已。导出的Ant构建文件的优点在于,它不仅提供了用于构建整个对象的目标,而且还提供了允许运行JUnit测试的正确目标。我会记住这一点。
乔尼斯(Joanis)2010年

好点子。我希望Eclipse在确定在构建文件中生成什么目标时也考虑“项目性质”。您可以检查Eclipse如何生成build.xml,因为它在内部使用ant本身。但这使您回到必须做一个“科学项目”来理解这些Eclipse内部知识。也许Builder步骤确实是正确的选择。
Jan Schiefer 2010年

2

如果您只需要classpath条目,我将执行以下类似操作以使用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>

1

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

不幸的是,我没有时间将其合并到官方的Eclipse构建中。


0
  • 从主菜单中选择“文件”>“导出”(或右键单击项目名称,然后选择“导出”>“导出...”)。
  • 在“导出”对话框中,选择“常规”>“ Ant构建文件”,如下所示: 在此处输入图片说明

  • 单击下一步。在“生成蚂蚁构建文件”屏幕中:

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

在此处输入图片说明

  • 单击Finish,Eclipse将build.xml在项目目录下生成文件,如下所示:
    在此处输入图片说明
  • 双击build.xml文件以在Ant编辑器中打开其内容: 在此处输入图片说明

资源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.