美文网首页
《编写可维护的JavaScript》读书笔记之自动化-Ant

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

作者: 游学者灬墨槿 | 来源:发表于2019-01-12 15:33 被阅读3次

Ant

开发者通常基于他们所熟悉的工具来选择构建工具。 Ant 最初是为 Java 项目而量身定做的构建工具,但因其简单的 XML 语法和内置的任务,成为 JavaScript 构建工具的一个明智选择。

安装

运行 Ant 需要 Java 环境,所以请确保你的系统已经安装并配置好 Java。

配置文件

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)。

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

相关文章

网友评论

      本文标题:《编写可维护的JavaScript》读书笔记之自动化-Ant

      本文链接:https://www.haomeiwen.com/subject/zylcdqtx.html