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

ant build.xml文件的最佳位置?,ant,Ant,对于那些在多个项目中使用Ant的人来说,build.xml文件放在哪里?您是将它们放在每个项目中,还是将它们放在包含所有Ant相关文件的单独项目中 通常的建议是在每个项目中放置build.xml。但这有几个缺点: 这使得在多个项目中重用公共目标变得困难 有时,您希望使用Ant从源代码管理导出项目并进行部署。显然,如果构建文件在项目中,您就不能这样做 但如果你把它们放在一个共同的位置: 人们需要知道使用它们的位置;他们不能仅仅使用“ant-find”来查找当前项目的文件 对于项目的不同分支,

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

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

  • 这使得在多个项目中重用公共目标变得困难

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

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

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

  • 对于项目的不同分支,不能有不同的生成说明

你们是干什么的


编辑:感谢您迄今为止提出的好建议。就Maven而言,这些不是Java项目,我的印象是Maven只适用于Java。

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

这样做可以使文件中的路径更加清晰,并且可以清楚地知道如何构建项目


如果我有多个需要构建的项目,我将为每个项目创建一个单独的build.xml,并在所有项目所在的目录中创建一个中心build.xml,用于调用其他build.xml文件。这给了您很大的灵活性,只需很少的工作。

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

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

  • 通用目标的重用应该使用Eric Hatcher在其书中描述的技术来完成。基本上,您可以将所有公共性提取到一些顶级文件中,所有其他Ant文件都从这些文件“继承”

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

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


我想做的真正的建议是把Ant和转换成Maven——就像Apache软件基金会一样(他们同时维护蚂蚁和Maven)。

  • 在每个项目的根目录中都有build.xml
  • 创建一个总体build.xml 用于所有项目,并将其放置在 我的存储库的后备箱
  • 最重要的buid.xml 每个项目的签出任务。 我猜你提到 从存储库导出,您可以 实际上意味着进口
  • 总体构建文件 定义依赖项(如果有)
  • 您可以使用每个项目的单个生成文件更新各个项目
  • 如果您确实定义了公共任务,则可以从公共生成文件以及其他人建议的文件继承

看起来您的项目集可能是迁移到Maven的一个很好的候选者,我意识到这并不总是可能的,但如果您有时间,您可能会想研究它。

如果您正在处理独立的项目,您可以:

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

编辑svn:externals的诀窍是,如果链接到一些常见文件的头,它们可能会在几个月/几年后发生更改。因此,每次标记时,都应该将svn:externals更改为指向包含项目的修复版本。当一个项目在上一次构建数年后必须重新构建时,这可能很方便。

虽然Maven主要是一个Java构建工具,但它有其他语言的插件。看,Maven可以构建多种语言;这不仅仅适用于Java,这正是我们使用的配置。我不希望像代码覆盖率目标这样的东西到处复制粘贴继承。我本应该关注一个特定的修订,尽管这不是什么大问题。build.xml文件在哪里?