你如何“重构”ant build.xml文件?

时间:2009-04-17 16:56:19

标签: c++ configuration ant build-process

我正在开发一个使用ant + cpptasks构建的大型C ++系统。它运行良好,但build.xml文件失控,因为添加新库或可执行目标的标准操作过程是复制并粘贴另一个lib / exe的规则(已经非常大)。如果这是“正确的代码”,它会为重构而尖叫,但作为一个蚂蚁新手(更习惯制作或VisualStudio解决方案)我不确定选项是什么。

什么是ant用户阻止ant build文件爆炸的最佳做法?

一个明显的选择是通过XSLT生成build.xml,为常见的重复模式定义自己的标记。有人这样做,还是有更好的方法?

5 个答案:

答案 0 :(得分:13)

您可能对以下内容感兴趣:

另请参阅本文“ant features for big projects”。

答案 1 :(得分:5)

如果规则是重复的,那么您可以使用macrodef将它们分解为一个ant宏并重用该宏。

如果文件的大小是无法管理的,那么您可以将其分解为较小的文件,并在这些文件中包含主build.xml调用目标。

如果它们都不是,那么您可能需要考虑使用构建系统。虽然我自己没有使用过Maven,但我听说它可以解决许多大型且难以管理的构建文件问题。

答案 2 :(得分:3)

通常,如果您的构建文件很大且很复杂,那么这清楚地表明您的代码布局方式,就文件夹和包而言,它复杂且过于复杂。我发现一个复杂的蚂蚁脚本清楚地表明了一个布局不佳的代码库。

要解决此问题,请考虑如何布置代码。你有几个项目?这些项目是否知道如何使用主构建脚本构建自己,该脚本知道如何将各个项目/应用程序/组件捆绑到一个更大的整体中。

当你重构代码时,你正在寻找方法或破坏它们以便它们更容易理解 - 更小的方法,更小的类,方法和类做一件事。您还需要将相同的原则应用于代码库。

创建功能更强大的小组件,并且与其余代码非常松散地分离。使用构建脚本将该组件构建到库中。使用其余代码执行此操作。现在创建一个主构建脚本,该脚本知道如何捆绑所有库并将它们构建到您的应用程序中。如果您有多个应用程序,那么为每个应用程序创建构建脚本,并创建一个知道如何将应用程序捆绑到可分发的主程序。

通过查看构建脚本,您应该能够看到并理解代码库的布局和结构。如果它们/它不干净且易于理解,那么您的源代码也不是。

答案 3 :(得分:3)

使用Antlib文件。

是一种非常干净的方式
  1. 删除复制/粘贴的代码
  2. 定义默认值
  3. 如果你想看一个例子,你可以看看我正在为我的沙箱项目写的一些build script

答案 4 :(得分:1)

我会尝试Ant-Ivy- the agile dependency manager。我们最近开始将它用于一些更复杂的系统,它就像一个魅力。这里的优点是你没有得到maven的开销和转换成本(它使用ant目标,因此将与你当前的设置一起使用)。两者之间Here is a comparison