博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nant简单功能介绍
阅读量:4213 次
发布时间:2019-05-26

本文共 2163 字,大约阅读时间需要 7 分钟。

什么是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>

 

运行结果

你可能感兴趣的文章
Secure CRT 自动记录日志 配置 小记
查看>>
RMAN RAC 到 单实例 duplicate 自动分配通道 触发 ORA-19505 错误
查看>>
mysql 随机分页的优化
查看>>
SSL与IPSec的比较
查看>>
IP修改器能够解决什么问题?
查看>>
如何解除网络访问限制?
查看>>
HTTP代理可以用于注册业务吗?
查看>>
使用高匿名IP安全吗?
查看>>
Java和python爬虫有什么区别?
查看>>
如何检测代理IP有效性?附代码
查看>>
SOCKS5代理的应用场景有哪些?
查看>>
代理IP可以降低手游网络延迟吗?
查看>>
电脑提示IP地址错误的解决方法
查看>>
IP代理与白名单的联系
查看>>
如何检测IP的速度及稳定性?
查看>>
爬虫代理IP被封的六大原因
查看>>
基于C/C++的二维动态数组构建
查看>>
本文通过c语言实现九宫格。九宫格的难点在于如何创建矩阵,数字如何排列,在边界处如何处理。因此,本文主要有两个部分:二维动态数组实现任意奇数阶的矩阵;矩阵中数字的排列。
查看>>
leecode142题题解
查看>>
剑指offer-斐波那契数列的解法
查看>>