《编写可维护的JavaScript》读书笔记之自动化-Ant

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 元素表示。

  • 任务:构建过程中的一个步骤,比如执行一个程序或者复制一个文件。
  • 目标:一组有序任务的集合。
  • 项目:所有目标的容器。

【示例】:


    
        Hello World!
    

【说明】:

  • 每个 build.xml 文件都是始于一个代表整个项目的 元素。必须指定 name 属性,用来唯一标识这个项目。如果没有明确指出要执行的目标,default 属性所指示的目标就会被作为默认目标来执行。
  • 目标由 元素来表示,name 属性也是必需的。
  • 一个项目可以有多个目标,一个目标可以有多个任务。

【推荐】:尽可能颗粒化细分目标,以便使它们可以以任何方式灵活的组合,把你想实现功能的目标当做是重复任务按照逻辑进行分组。

执行构建

只要你已经创建了 build.xml 文件,就可以在该目录下打开一个命令行,然后输入:

ant

【说明】:

  • 默认情况:Ant 会读取 build.xml 文件并读取 元素的 default 属性,以确定执行哪个目标。若没有 default 属性,则不执行任何目标。
  • 显示指定:在命令行上通过参数显式的指定要运行的目标。此时 Ant 会执行指定的目标,而非 default 属性指定的默认目标。
ant hello

【输出结果】:

Buildfile: /path/build.xml

hello:
    [echo] Hello world!
    
BUILD SUCCESSFUL
Total time: 0 seconds
  • 第一行:构建文件的路径。
  • 中间:被执行的目标和被执行任务的列表。方括号内显示的是任务名称,输出的结果在其右边显示。
  • 倒数第二行:大写显示的消息用来表示构建结果。
  • 最后一行:构建所用的时间。

目标操作的依赖

每个目标都可能会被指定依赖关系——其他被依赖的目标必须在当前目标执行之前成功执行。依赖关系通过 depends 属性来指定,多个依赖之间用半角的逗号顺序分隔,被依赖的目标将首先被执行。

【示例】:


    
        Hello world!
    
    
        Goodbye!
    

【输出结果】:

ant goodbye

# 输出结果
Buildfile: /path/build.xml

hello:
    [echo] Hello world!

goodbye:
    [echo] Goodbye!

BUILD SUCCESSFUL
Total time: 0 seconds

属性

Ant 中的属性类似 JavaScript 中的变量,因为它们通常都包含数据,这些数据在执行脚本期间都可以被操作和改变。

【示例】:用 标签定义一个属性。


    

【说明】:每个 都需要指明 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.
  • 你可以使用 元素并通过 srcfile 属性指明文件路径来把这些特性导入 Ant 脚本中。

    
    
        Version is ${version}
    

  • 通过 加载的属性与那些在 build.xml 中直接定义的属性一样,都可以以相同的方式访问。对于需要定义大量的属性或是要需要在多个 Ant 脚本之间公用的属性而言,最好把它们放在一个独立的 Java 属性文件中。

【建议】:最好至少声明几个可用于整个项目的属性。

  • src.dir:源代码目录的根目录。
  • build.dir:放置最终构建后文件的路径。
  • lib.dir:依赖文件的路径。

Buildr 项目

Buildr 是一个寻找和收集前端相关且语法简单的 Ant 任务的开源项目。虽然对于处理 JavaScript 文件而言有很多工具可以选择,但是它们之间都有一些不同。Buildr 囊括了所有这些可能在你的 Ant 脚本中使用到的各种工具,把它们封装成了任务(tasks)。

网址传送门:https://github.com/nzakas/buildr

你可能感兴趣的:(《编写可维护的JavaScript》读书笔记之自动化-Ant)