Ant
开发者通常基于他们所熟悉的工具来选择构建工具。 Ant 最初是为 Java 项目而量身定做的构建工具,但因其简单的 XML 语法和内置的任务,成为 JavaScript 构建工具的一个明智选择。
安装
运行 Ant 需要 Java 环境,所以请确保你的系统已经安装并配置好 Java。
- Mac OS X:默认安装了 Ant。
- Ubuntu:运行
sudo apt-get install ant
安装 Ant。 - 其他操作系统:参照 http://ant.apache.org/manual/install.html 中的说明。
配置文件
Ant 的主要配置文件是 build.xml。当从命令行上运行 Ant 且未指定配置文件时,Ant 会在当前的工作目录中寻找这个文件,所以最好把 build.xml 放置在项目的根目录下。
【注意】:你不需要在该文件中保留所有构建相关的配置信息,但是在 Ant 运行时,build.xml 文件必须存在。
【什么是 build.xml】:build.xml 是一个 XML 文件,用来告诉 Ant 如何执行构建过程。
【组成部分】:构建系统的每个部分都由一个 XML 元素表示。
- 任务:构建过程中的一个步骤,比如执行一个程序或者复制一个文件。
- 目标:一组有序任务的集合。
- 项目:所有目标的容器。
【示例】:
<project name="projectName" default="hello">
<target name="hello">
<echo>Hello World!</echo>
</target>
</project>
【说明】:
- 每个 build.xml 文件都是始于一个代表整个项目的 <project> 元素。必须指定 name 属性,用来唯一标识这个项目。如果没有明确指出要执行的目标,default 属性所指示的目标就会被作为默认目标来执行。
- 目标由 <target> 元素来表示,name 属性也是必需的。
- 一个项目可以有多个目标,一个目标可以有多个任务。
【推荐】:尽可能颗粒化细分目标,以便使它们可以以任何方式灵活的组合,把你想实现功能的目标当做是重复任务按照逻辑进行分组。
执行构建
只要你已经创建了 build.xml 文件,就可以在该目录下打开一个命令行,然后输入:
ant
【说明】:
- 默认情况:Ant 会读取 build.xml 文件并读取 <project> 元素的 default 属性,以确定执行哪个目标。若没有 default 属性,则不执行任何目标。
- 显示指定:在命令行上通过参数显式的指定要运行的目标。此时 Ant 会执行指定的目标,而非 default 属性指定的默认目标。
ant hello
【输出结果】:
Buildfile: /path/build.xml
hello:
[echo] Hello world!
BUILD SUCCESSFUL
Total time: 0 seconds
- 第一行:构建文件的路径。
- 中间:被执行的目标和被执行任务的列表。方括号内显示的是任务名称,输出的结果在其右边显示。
- 倒数第二行:大写显示的消息用来表示构建结果。
- 最后一行:构建所用的时间。
目标操作的依赖
每个目标都可能会被指定依赖关系——其他被依赖的目标必须在当前目标执行之前成功执行。依赖关系通过 depends 属性来指定,多个依赖之间用半角的逗号顺序分隔,被依赖的目标将首先被执行。
【示例】:
<project name="maintainablejs" default="hello">
<target name="hello">
<echo>Hello world!</echo>
</target>
<target name="goodbye" depends="hello">
<echo>Goodbye!</echo>
</target>
</project>
【输出结果】:
ant goodbye
# 输出结果
Buildfile: /path/build.xml
hello:
[echo] Hello world!
goodbye:
[echo] Goodbye!
BUILD SUCCESSFUL
Total time: 0 seconds
属性
Ant 中的属性类似 JavaScript 中的变量,因为它们通常都包含数据,这些数据在执行脚本期间都可以被操作和改变。
【示例】:用 <property> 标签定义一个属性。
<project name="maintainable.js">
<property name="version" value="0.1.0" />
</project>
【说明】:每个 <property> 都需要指明 name 和 value 属性。定义后便可通过 ${name} 来引用。
Version is ${version}
【输出结果】:
Buildfile: /path/build.xml
version:
[echo] Version is 0.1.0
BUILD SUCCESSFUL
Total time: 0 seconds
【说明】:
- 这个特殊的 ${} 语法可以让你在任何时候把你想要的属性值插入到任务中。
- 属性也可以定义在外部的 Java 属性文件中,并直接载入到 Ant 中。例如,假设你有一个名为 build.properties 的文件。
version = 0.1.0
copyright = Copyright 2012 Nicholas C.Zakas. All rights reserved.
- 你可以使用 <loadproperties> 元素并通过 srcfile 属性指明文件路径来把这些特性导入 Ant 脚本中。
<project name="maintainablejs" default="version">
<loadproperties srcfile="build.properties" />
<target name="version">
<echo>Version is ${version}</echo>
</target>
</project>
- 通过 <loadproperties> 加载的属性与那些在 build.xml 中直接定义的属性一样,都可以以相同的方式访问。对于需要定义大量的属性或是要需要在多个 Ant 脚本之间公用的属性而言,最好把它们放在一个独立的 Java 属性文件中。
【建议】:最好至少声明几个可用于整个项目的属性。
- src.dir:源代码目录的根目录。
- build.dir:放置最终构建后文件的路径。
- lib.dir:依赖文件的路径。
Buildr 项目
Buildr 是一个寻找和收集前端相关且语法简单的 Ant 任务的开源项目。虽然对于处理 JavaScript 文件而言有很多工具可以选择,但是它们之间都有一些不同。Buildr 囊括了所有这些可能在你的 Ant 脚本中使用到的各种工具,把它们封装成了任务(tasks)。
网友评论