代码之家  ›  专栏  ›  技术社区  ›  andrewrk

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

ant
  •  9
  • andrewrk  · 技术社区  · 5 年前

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

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

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

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

    但如果你把它们放在一个共同的地方:

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

    • 对于项目的不同分支,不能有不同的构建说明。

    你们做什么?

    编辑 :谢谢你到目前为止提出的好建议。至于Maven,这些不是Java项目,而我的印象是Maven仅仅是Java的意思。

    5 回复  |  直到 6 年前
        1
  •  5
  •   SingleShot    15 年前

    将Ant文件与项目放在一起。那就是 事实上的 标准,由Ant的创建者推荐。我将努力解决您提出的一些问题:

    • 通用目标的重用应该使用EricHatcher在书中描述的技术来完成。 Java Development with Ant . 基本上,您将所有的共性提取到一个顶层文件中,其他所有Ant文件都“继承”自这个文件。

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

    对于蚂蚁来说,我建议你抓起那本书——它有很多有用的技巧。

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

        2
  •  2
  •   kauppi    15 年前

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

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

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

        3
  •  1
  •   dj_segfault    15 年前

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

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

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

        4
  •  1
  •   Pascal Thivent    15 年前

    我期待一个 Ant 构建文件将位于项目的顶部(必须查看构建文件才能“发现”如何构建项目已经是一件痛苦的事情,因此如果必须首先找到它,它会让我非常疯狂)。现在,关于你提到的所有缺点,我想说:你为什么不使用 Maven 是吗?

        5
  •  0
  •   Deep Kapadia    15 年前

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

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

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