现在的位置: 首页 > 综合 > 正文

一些Ant经验

2013年05月29日 ⁄ 综合 ⁄ 共 1002字 ⁄ 字号 评论关闭

最近写了不少Ant脚本,总结一下经验吧,仅供参考。

1. 脚本应当尽量减少对Build机器环境的依赖。Build过程中依赖的一些工具可以放到公共目录中,或者提交到代码库中。理想的构建环境是,只要代码checkout出来,执行一条命令,代码就能编译。

2. 使用相对路径以减少代码构建时对代码所在目录的依赖。

3. 慎用depends。假设两个target,compile和test,test只有在compile后才能执行,那么一般的做法是

<target name="test" depends="compile">
  <!-- code omitted -->
</target>


如果Ant的xml文件中target的数量不多,使用这种方式是OK的,但是如果target的数量很多,过度使用depends可能会导致难以理清targets之间的依赖关系,从而导致一些诡异的问题。请继续看寻找解决办法。

4. 分清public和private的target。Ant的语法中是没有public和private的target之分的。但是在实践中,某些target的作用是支持其他的target,比如init,clean等target,这种就被称为private target(类似于私有函数),单独执行init或者clean的实际意义不大。而某些target是给外界使用的,比如compile, test,这些target就被称为public target,类似于公共函数。

5. 为每一个公共target建立一个私有的target,以do开头,比如

<target name="do-test">
  <!-- code omitted -->
</target>

需要注意的是私有的target不要有任何的依赖。然后再建立公共的target,将对应的私有target和其他需要的target作为其依赖,比如

<target name="test" depends="init, do-compile, do-test">
</target>
<target name="compile" depends="init, do-compile">
</target>

因为私有的target在Ant脚本中没有定义其依赖,这就能很容易看出这个target依赖了哪些targets。根据SRP的思想,一个函数或者一个类只做一件事,同样一个target也只做一件事。这样的另外一个好处就是方便调试。

待续。

抱歉!评论已关闭.