Nant简单功能介绍

什么是Nant


应用于.net平台的项目构建工具,类似Ant ,使用其可以完成.net平台的项目进行自动化的、可重复的创建过程,其中包括每天运行多次的自动化测试,以及生成result report

 

我为什么使用它:

他可以是使我的系统在添加新功能时可以以热插拔方式进行,并且可以自由组合我定义所有任务的执行顺序。非常灵活


语法简介

 

Nant脚本代码文件的基本结构

 

<?xml version="1.0"encoding="gb2312"?>

<project name="Projects"default="prebuild">

       <targetname="prebuild" depends="namecheck,clean "description="…">

                   ……

       </target>

       <targetname="namecheck" >

                   ……

       </target>

</project>

 

说明:encoding="gb2312"使得脚本文件可以支持中文

<project>标签定义了项目属性,一个脚本文件只能有一个项目定义default="prebuild"说明该项目缺省从prebuild任务开始执行

<target>标签定义了一项任务,任务是Nant脚本具体执行动作的最小单元

depends="namecheck,clean "说明该任务执行前需要namecheck和clean任务先执行

description描述了该任务的一些说明性信息

 

定义变量


<property name="<变量名>"value="$<变量值>"/>

要使用已经定义的变量,可以用${<变量名>},要使用内建函数,可以使用${<函数名称>}

 <property name="PROJECT_NAME"value="WebTestProject" />

 <property name="PROJECT_VER"value="${PROJECT_NAME}" />

 <property name="curdir" value="${directory::get-current-directory()}"/>



引入外部文件


可以创建一个外部的,同样以build为文件名的文件,定义若干常量,在主文件中引用他们。

 

<?xml version="1.0"encoding="utf-8"?>

<project name="External">

   <property name="EXT_NAME" value="external value infile external.build."/>

</project>

 

将上述xml片段保存为c:/2.build,同时,在1.build中加入:



运行结果



执行外部程序


在Nant 脚本文件中也可以调用其他可执行程序

比如我们打开使用Notepad 打开文本文件

 

<target name="RunNotePad">

   <exec program="Notepad.exe">

         <argvalue="c:/new.txt" />

   </exec>

</target>

 

<execprogram="c:/Notepad.exe"> 为要执行的可执行程序的路径

<arg value="c:/new.txt"/> 为Notepad.exe的参数,如有多组参数,则需多组<arg value= />


执行结果



Depends的属性


如果一个buildfile中有多个target,并且他们之间有依赖关系,就可以用depends属性来维护。例如:

1.  <target name="A">  

2.  <target name="B" depends="A" />  

3.  <target name="C" depends="B,A" />  

4.      

5.  <target name="D" />  

6.  <target name="E" />  

7.  <target name="F" depends="D, E, A" />  

执行targetB的执行顺序是:A->B;而执行targetC的顺序是: A->B->C;执行targetF的顺序是:D->E->A。


条件测试


Nant同样支持条件测试,通过内置的或自定义的函数,进行一些判断,当条件符合时,就执行相应的任务。

<targetname="TestCondition">

   <if test="${string::contains(PROJECT_VER,'001')}">

         <echomessage="current project version is 001, we need to dosomething..."/>

             <call target="RunNotePad"/>

   </if>

</target>

 

运行结果



通过外部传递参数


通过使用-D:<name>=<value> 来进行参数的传递

<target name="Workspace">

   <if test="${property::exists('workspace')}">

         <echomessage=" workspace is ${workspace}"/>

   </if>

</target>

 

运行结果



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻找幸存者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值