ant build.xml文件的最佳位置?

时间:2009-10-02 22:12:21

标签: ant

对于那些在多个项目中使用Ant的人,你在哪里放置build.xml文件?您是在每个项目中放置一个,还是将它们放在包含所有Ant相关文件的单独项目中?

通常的建议是在每个项目中放置一个build.xml。但这有一些缺点:

  • 这使得在多个项目中重用常见目标变得困难。

  • 有时您希望使用Ant从源代码管理中导出项目并进行部署。如果构建文件在项目本身中,显然你不能这样做。

但如果你把它们放在一个共同的位置:

  • 人们需要知道他们使用它们的位置;他们不能只使用“ant -find”来查找当前项目的文件。

  • 您不能为项目的不同分支提供不同的构建说明。

你们做什么?

编辑:感谢您提出的好建议。至于Maven,这些都不是Java项目,我觉得Maven只适用于Java。

5 个答案:

答案 0 :(得分:5)

将Ant文件与项目一起放置。这是事实上的标准,由Ant的创建者推荐。我将尝试解决您提出的一些问题:

  • 应使用Eric Hatcher在他的书Java Development with Ant中描述的技术重复使用共同目标。基本上,您将所有通用性提取到所有其他Ant文件“继承”的顶级文件中。

  • 使用Ant从源代码管理中导出项目对我来说似乎很奇怪,但是如果你想这样做,请使用不同的Ant文件:-)你可以创建一个像ant export -Dproject=foo/bar这样的目标。

对于Ant,我建议你抓住那本书 - 它有很多有用的技巧。

我要做的真正建议是删除Ant并转换为Maven - 就像Apache Software Foundation一样(他们同时维护Ant和Maven)。

答案 1 :(得分:2)

如果您正在使用独立项目,您可以:

  • 将您的build.xml放在顶层
  • 将公共Ant定义(Antlib)放入另一个项目(例如config)
  • 使用svn:externals将公共Antlib定义(从'config')导入到项目中

编辑使用svn:externals的技巧是,如果你链接到一些常见文件的HEAD,可能会发生在几个月/几年后它们会发生变化。因此,每次标记时,都应更改svn:externals以指向所包含项目的修复版本。当项目最后一次建成多年后必须重建时,这可能会很方便。

答案 2 :(得分:1)

我的经验法则是将build.xml文件放在引用所有文件的目录中。换句话说,没有相对路径应以“../”开头。我住的地方,通常意味着将它放在“trunk”目录下,该目录下面有src,lib,build,docs等。

这样做可以使文件中的路径更加清晰,并且很明显如何构建项目。

如果我有多个需要构建的项目,我将为每个项目创建一个单独的build.xml,并且所有项目所在目录中的中央build.xml将调用其他build.xml文件。只需很少的工作就可以为您提供很大的灵活性。

答案 3 :(得分:1)

我希望Ant构建文件位于项目的顶部(必须查看构建文件以“发现”如何构建项目已经很痛苦,所以如果我必须首先找到它,它会让我完全疯狂)。现在,关于你提到的所有缺点,我很想说:你为什么不使用Maven

答案 4 :(得分:0)

我这样做的方式是过去(现在我只是使用Maven):

  • 在每个项目的根目录中有一个build.xml
  • 创建一个总体build.xml 对于所有项目并将其放入 我的存储库的主干
  • 总体buid.xml有 每个项目的结账任务。 我猜你什么时候提到的 从存储库导出,你 实际上意味着进口。
  • 总体构建文件也是 定义依赖项,如果有的话
  • 您可以使用每个项目的单个构建文件
  • 更新单个项目
  • 如果您确实定义了常见任务,则可以从公共构建文件以及其他人建议继承。

看起来你的项目集合可能是迁移到Maven的一个很好的候选者,我意识到它并不总是可行,但如果你有时间,你可能想要调查它。