2009-04-17 89 views
14

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

什么是ant用户停止ant构建文件爆炸的最佳做法?

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

回答

13

你可能感兴趣的:

检查也是本文的 “ant features for big projects”。

+2

链接不再工作。修正了链接:http://ant.apache.org/manual/Tasks/macrodef.html和http://ant.apache.org/manual/Tasks/import.html和http://ant.apache.org/manual /Tasks/subant.html – 2010-09-29 13:21:22

+1

修复了损坏的链接。 – 2011-01-20 00:38:14

5

如果规则是重复的,那么你可以使用macrodef将它们归入蚂蚁宏并重用该宏。

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

如果不是这些,那么你可能要考虑使用构建系统。尽管我自己没有使用过Maven,但我听说它可以解决大量难以管理的构建文件的许多问题。

1

我会试试Ant-Ivy-the agile dependency manager。我们最近开始将它用于一些更复杂的系统,它的功能就像一个魅力。这样做的好处是你不需要为maven(它使用ant目标,因此可以和你当前的设置一起工作)获得开销和转换成本。两者之间为Here is a comparison

3

一般来说,如果你的构建文件很大且很复杂,那么这就清楚地表明了你的代码在文件夹和包装方面的展开方式,它非常复杂和复杂。我发现一个复杂的蚂蚁脚本是一个糟糕的代码库清晰的气味。

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

当您重构代码时,您正在寻找方式或将其分解,以便更易于理解 - 更小的方法,更小的类,方法和类来完成一件事。您需要将这些相同的原则应用于您的代码库。

创建更小的组件,这些组件在功能上具有内聚性,并且与代码的其余部分非常松散地分离。使用构建脚本将该组件构建到库中。用你的其他代码来做到这一点。现在创建一个主构建脚本,知道如何捆绑所有库并将它们构建到应用程序中。如果您有多个应用程序,则为每个应用程序和一个知道如何将这些应用程序捆绑到可分发程序的主应用程序创建构建脚本。

只需查看构建脚本,就能看到并理解代码库的布局和结构。如果他们/它不干净和可以理解,那么你的源代码也不是。

3

使用Antlib文件。这是一个非常干净的方式

  1. 删除复制/粘贴代码
  2. 定义默认值

如果你想看到一个例子,你可以在一些build script我是来看看写我的沙箱项目。