NAnt 简介

简介: 表达式是一种简单而强大的机制,允许写高级的公式,用于 task 的参数和条件式中,这样就可以控制连编过程了。表达式能够访问 project 的属性、调用内建的或者用户定义的functions 。

NAnt 是一个 Visual Studio .Net 应用程序的连编工具,对大而负责的工程而言,使用 NAnt 很方便。

1.      安装

从 http://nant.sourceforge.net 上可以下载源代码或者编译好的二进制文件,一般下载 nant-bin.zip ,解压,注册系统环境变量后,就可以使用 nant 命令了。

2.      Build 文件

XML 格式,每个 build 文件包含一个 project , project 有若干 target ,每个 target 包含若干 task 。 Task 不被包含在 target 中,即直接包含在 project 中。

Ø       Projects (工程)

三个特性, name 、设置工程名称, default 、设置默认 target ,和 basedir 、如果不设置,默认为 build 文件的父目录。

执行 nant 时,可以知道 targets ,如果未指定,执行默认得 target ,如果 build 文件中未指定默认得 target ,仅仅执行全局的 task (全局的 task 总是执行),如果没有全局的 task ,那就什么都不执行了。

Ø       Targets (目标、对象)

有五个特性, name 、指定名称, depends 、此 target 所依赖的 targets (多个用“,”隔开), if 、如果条件为 true 执行此 target , unless 、如果条件为 true 跳过此target , description 、功能的简短描述。其中 name 必须指定。

执行某个 target 时,首先执行此 target 所依赖的 targets 。一个 target 可能被 depends 多次,仅执行一次,但是通过 <call> 任务( task )执行一个 target 时,此target 及其所依赖的 targets 要重新执行一次。另外,当 target 的名称被设置为“ * ”时,称为 wild target ,一个 build 文件仅仅有一个 wild target ,在目前的 build 文件中,当且仅当被调用的 target 不存在时,才执行 wild target ,主要用来处理无效的请求。

Ø       Task (任务)

一块可执行的代码,一个 task 可有多个特性和参数。特性的值可包含对属性的引用,在 task 执行前,这些引用会被解释出来。

Ø       Properties (属性)

一个 project 可有很多属性,这些属性可以通过 <property 任务设置在 build 文件中,也可以设置在 Nant 外。一个属性有一个 name 和一个 value ,可用于 task 的特性中,也可用于表达式,用在 task 的特性中时,使用 ${property name} 格式。 Nant 有很多内建属性(与 nant 有关的,与框架有关的,与平台有关的等)。

<property> 任务有 readonly 和 overwrite 等特性, readonly 指定属性是否是只读到,默认 false , overwirte 指定如果属性已经存在,属性值是否可以重写,默认 true,对于只读属性,是不能被重写的。注意:在 Nant 命令行指定的属性,先于在 build 文件中指定的属性,并且这些属性往往是只读的。

另外可以在 NAnt.exe.config 文件中定义全局属性。

Ø       Loggers & Listeners

Nant 通过 Loggers 和 Listeners 来监控连编过程。 Listeners 记录了 build started , build finished , target started , target finished , task started , task finished , message logged 事件, Loggers 扩展了 Listeners ,可以按 -quiet (静态的,平稳的) , -verbose (详细的) , -debug 三个层次记录连编信息,可输出到控制台或者文件中。 Nant 内建了三个类: NAnt.Core.DefaultLogger 、 NAnt.Core.MailLogger 和 NAnt.Core.XmlLogger 。使用时: -logger :类 -logfile :文件名。可以是普通道文本文件或者 XML 文件。

Ø       Expressions (表达式)

表达式是一种简单而强大的机制,允许写高级的公式,用于 task 的参数和条件式中,这样就可以控制连编过程了。表达式能够访问 project 的属性、调用内建的或者用户定义的functions 。

表达式通过 ${…} 符号,可用于 task 的参数中。也可以使用标准的算术、逻辑和关系运算符。通过 prefix::function-name(argument1, ..., argumentN) 语法调用函数。访问属性,仅需指定其 name ( ${…} )

例子:

访问属性

<property name="build.version" value="3" />

<echo message="The current date is: ${build.version}" />

调用函数

<echo message="The current date is: ${datetime::now()}" />

表达式结果存储

<property name="autoexec-present" value="${file::exists('c:\autoexec.bat')}" />

Real-life expression use

<property name="myprj.basedir" value="c:\" />

<property name="filename" value="${path::combine(myprj.basedir,'version.txt')}" />

 

<if test="${not file::exists(filename) or file::get-length(filename) = 0}">

    <echo message="The version file ${filename} doesn't exist or is empty!" />

</if>

有条件执行 task

<property name="myprj.basedir" value="c:\" unless="property::exists('myprj.basedir')" />

<csc target="library" output="out.dll" ...

     if="${datetime::now() - file::get-last-write-time('out.dll')) > timespan::from-hours(1)}">

...

</csc>

Functions

Nant 提供了操作字符串、日期时间和路径名字的函数,还提供读取文件或者目录属性,访问目前的连编信息等函数。

调用函数语法 prefix::function-name(argument1, ..., argumentN) ,需要的情况下会进行参数类型转换,如果转换有误,会报告错误。

自定义函数可以使用任何 .Net 语言实现,此外还可以通过 <script> 任务实现。

3.      运行 Nant

命令 Nant ,此外还可以指定 build 文件名、 targets 和 properties 等。

Nant

NAnt -buildfile:..\fileName.build

NAnt clean

NAnt -D:debug=false clean dist

目录
相关文章
|
11月前
|
Java
Ant 简介-下
Ant 简介-下
109 0
|
XML Java Apache
Ant简介
Apache Ant 是由 Java 语言开发的工具,由 Apache 软件基金会所提供。Apache Ant 的配置文件写成 XML 容易维护和书写,而且结构很清晰。本教程将以简单的方式会向你展示如何利用 Apache ANT 来自动地构建和部署过程。 下载到某个目录解压到, 例如安装路径C:\L_Executable\apache-ant-1.10.5 配置环境变量 ANT_HOME C:\L_Executable\apache-ant-1.10.5 Path %ANT_HOME%\bin 运行ant -version查看是否安装成功Apache Ant(TM) version 1.10
764 0
Ant简介
|
自然语言处理 数据库 Windows
Wix 安装部署教程(十三) -- 多语言安装包
原文:Wix 安装部署教程(十三) -- 多语言安装包       这几天摸索WIX的多语言安装包(这里是Wix的setup 工程,不是Bundle),终于走通了,感谢网友uni的指点。WIX的多语言安装包能够根据系统环境自动切换界面语言,你也可以通过命令指定语言。
1746 0
|
XML JavaScript C++
KiCad 简介
[KiCad](http://kicad.org/) 一个跨平台的开源电子设计自动化套件。
423 0
KiCad 简介
|
JSON 前端开发 NoSQL
Typecho Framework简介
Typecho Framework是SegmentFault所用的框架,由创始人joyqi亲手打造。joyqi也是国内知名博客平台Typecho的作者。
297 0
|
存储 文件存储 缓存
|
Web App开发 监控
|
C++
Doxygen 的使用简介
DoxygWizard是基于QT的简易图形用户界面,简化了Doxygen的使用。您可以在DoxygWizard里对需要生成的文档进行设置,可保存为"Doxyfile",然后调用Doxygen生成文档。
1178 0