2010-11-15 154 views
77

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

任何想法或知识吗?

谢谢!

MJ

+1

您是否尝试过寻找添加自定义生成器的步骤? – 2010-11-15 17:55:32

+0

我不确定我该如何去做这件事。我看过项目建设者。我认为那里可能有些东西......我可能会添加一个构建器,一旦主“Java Builder”完成,它将生成build.xml文件。这就是你所说的建造者步骤吗?我可以尝试这个,如果我有任何线索有关编程调用项目上的导出ant构建文件操作。我怀疑这甚至是可能的。 – Joanis 2010-11-15 18:57:34

+0

你好M.Joanis,你终于找到了什么解决方案?我试图达到同样的目的,所以如果你能分享你的发现,那将会很好。 – theDmi 2011-07-08 05:11:27

回答

70

在Eclipse项目,然后“出口”,那么“常规”,然后“Ant构建文件”单击鼠标右键。我不认为可以自定义输出格式。

+0

对不起,我添加了一个关于“自动”的注释。就像我说的,我知道我可以轻松生成并导出这样的文件。让我困扰的是,每次需要完成时都要告诉Eclipse重新生成它。我会感兴趣的方式来自动触发我的项目“导出ant构建文件”行动。我发现输出格式没有问题(到目前为止)。 – Joanis 2010-11-15 16:50:07

+0

然后我不认为它在标准的Eclipse中是可能的。也许有些插件允许它虽然... – Guillaume 2010-11-15 16:56:56

+1

这似乎是为web项目生成build.xml,但不是为耳朵。我可以自动为ear文件生成build.xml吗? – 2012-01-26 13:19:04

2

查看项目中的.classpath文件,该文件可能包含大部分您想要的信息。最简单的选择可能是在生成过程中将自己的“build.xml导出”(即process .classpath)转换为新的build.xml,然后用蚂蚁子任务调用它。

解析一个小小的XML听起来比钩入Eclipse JDT更容易。

+1

我绝对同意,解析XML文件比编写Eclipse插件或类似的东西更吸引人。你的建议很有趣,但不是.classpath文件“一点点”简洁吗?我提供5条路径,就是这样。导出的Ant构建文件的优点在于它不仅提供了构建整个事物的目标,还提供了允许运行JUnit测试的正确目标。我会记住这一点。 – Joanis 2010-11-19 21:36:04

+0

好点。我希望Eclipse在确定在构建文件中生成什么目标时也考虑到“项目性质”。您可以检查Eclipse如何生成build.xml,因为它在内部使用ant本身。但是这会让你回到不得不做一个“科学项目”来理解这些Eclipse内部。也许Builder步骤确实是正确的选择。 – 2010-11-22 20:29:35

5

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

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

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

+2

看起来像一条非常有前途的道路。您似乎对Eclipse插件体系结构有很好的理解。如果您有任何进展,我们将随时向您通报我们的情况。谢谢! – Joanis 2011-09-26 19:48:11

+0

更新:不幸的是,我的工作没有给我足够的时间来实现它。相反,它变成了一种团队仪式,每次我们添加新的依赖时,团队都会重新导出构建文件。这并不理想,但它是自我实施的,因为如果有人试图在服务器上执行构建而不导出构建文件,它通常会破坏。 – 2013-11-20 15:22:48

1

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

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

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> 
4

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

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

ant-build-for-java

要使用它,请致电:

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

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

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

该工具仅支持从其他Eclipse项目和Eclipse用户库的依赖关系。

0
  • 选择文件>从主菜单中导出(或右键点击项目名称,并选择导出>导出...)。
  • 在导出对话框中,选择常规>蚂蚁构建文件如下: enter image description here

  • 点击下一页。在“生成Ant构建文件”屏幕中:

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

enter image description here

  • 点击完成,Eclipse会如下生成项目的目录下的文件build.xml
  • 双击文件在Ant编辑器打开它的内容: enter image description here

source