构建文件入门—ant入门指南(2)

.什么是构建文件?

构建文件是ant执行工程构建的入门文件,构建的所有任务都必须只能写在构建文件内,构建文件必须是符合标准的xml文件,默认的构建文件为build.xml,当你键入“ant”命名执行时,默认执行build.xml

标准构建文件模板:
  1. <?xml version="1.0"?>
  2. <project name="refund" default="build">
  3.     <target name="build">
  4.  
  5.     </target>
  6. </project>
关键点说明
  • 第一行为xml声明,必须存在;
  • 有且仅有一个project根标签;
  • default属性执行默认目标;
  • target(任务目标);
  • task:任务,是构建文件的最小执行单位,是具体干活的标签;
  • property:特性,或理解为属性。

2.新的demo代码

改变下上一篇的demo,增加点复杂点:创建一个src目录,将合并后的文件放在src目录下,并在合并后的文件内顶部添加一行自定义的合并注释。
新的demo中的build.xml:

  1. <?xml version="1.0"?>
  2. <project name="refund" default="build">
  3.     <property name="concat.note" value="//合并自a.js和b.js" />
  4.     <target name="build">
  5.         <echo>生成src目录</echo>
  6.         <mkdir dir="src"/>
  7.         <echo>开始合并文件</echo>
  8.         <concat destfile="src/a_b.js">
  9.             <header trimleading="yes">${concat.note}
  10.             </header>
  11.             <path path="a.js"/>
  12.             <path path="b.js"/>
  13.         </concat>
  14.     </target>
  15. </project>

在“CMD”界面运行“ant”命令,结果如下:(请确保你的demo中有a.js和b.js)

成功运行后你就会发现生成了一个src目录,目录下有个a_b.js文件,文件的第一行注释是//合并自a.js和b.js,完全符合我们构建要求!
这个demo的代码会比上一篇教程复杂了不少,明河来逐个说明下。

property标签

property标签为特性标签,你可以理解为编程语言中的属性或者变量,它起到的作用和变量是类似的,赋值后的property,可以在之后的目标任务内方便的引用。
property有二种数据元素:

  • 以名—值对出现的简单数据定义形式,比如demo中的 ;
  • dataType复杂数据元素,比如fileset,日后会讲解到。

如何引用property呢?
非常简单,在你需要引用的地方使用${property名}即可,比如demo中的${concat.note}。
property的location属性
property除了value属性外,还有个location属性,起到的作用类似,区别是location属性用来保存路径,location带了路径转换功能,会将路径转成绝对路径,如果你的路径是/,它会自动转换成\,这个属性日后会经常用到。比如下面的代码:

  1. <property name="refund.dir" location="d:/ant-demo/"/>
  2.     <property name="refund.dir2" location="../"/>
  3.     <target name="build">
  4.         <echo>${refund.dir}</echo>
  5.         <echo>${refund.dir2}</echo>
  6.     </target>

看看输出结果,留意明河取的是代码片段,请根据实际情况做下修改。

target标签

target标签非常的重要,“目标”标签可以理解为一系列任务标签的容器,是对任务的隐式说明,构建文件允许出现多个target,明河的建议是使用更细的target,比如demo中的代码可以修改为:

  1. <?xml version="1.0"?>
  2. <project name="refund" default="build">
  3.     <property name="concat.note" value="//合并自a.js和b.js" />
  4.     <target name="build" depends="mkdir,concat">
  5.  
  6.     </target>
  7.     <target name="mkdir">
  8.         <echo>生成src目录</echo>
  9.         <mkdir dir="src"/>
  10.     </target>
  11.     <target name="concat">
  12.         <echo>开始合并文件</echo>
  13.         <concat destfile="src/a_b.js">
  14.             <header trimleading="yes">${concat.note}
  15.             </header>
  16.             <path path="a.js"/>
  17.             <path path="b.js"/>
  18.         </concat>
  19.     </target>
  20. </project>

这里明河将一个target拆成了多个target,留意属性depends。
depends用于处理目标依赖,比如这里“build”依赖于“mkdir”和“concat”目标,那么ant会优先执行“mkdir”和“concat”然后才执行“build”。这种依赖机制是ant非常重要的处理模式!体现出ant的灵活性!

task任务标签

任务是ant构建文件的最小构建块,是构建的实施者,demo中的echo、concat都是任务标签,那么ant能完成多少个任务呢,或者说ant有多少构建功能呢?请猛击这里查看,(有个task list)。看了这个任务清单,我想你可以体会到ant究竟有多强大!

你可能感兴趣的:(构建文件入门—ant入门指南(2))