51Testing软件测试论坛

标题: ANT初阶 [打印本页]

作者: My_JIE    时间: 2018-6-11 17:13
标题: ANT初阶
安装

ant下载地址
百度百科
配置系统环境变量ANT_HOME(指向ant解压目录 )
[attach]116296[/attach]
配置path环境变量
[attach]116294[/attach]
在cmd中进入ant的bin目录,输入ant –version检查是否安装成功
[attach]116295[/attach]
TEST

1.在D:\ant目录下新建一个build.xml文件,文件内容如下:
<?xml version="1.0"?> <project name="helloWorld"> <target name="sayHello"> <echo message="HELLO WORLD!"/> </target> </project>
2.进入cmd输入命令ant sayHello可以看到结果如下图所示:

[attach]116297[/attach]
注意:ant默认找build.xml文件,如果将build.xml文件改成hello.xml,输入以上命令,会显示build.xml does not exist!
此时我们需要修改命令为:
ant -f hello.xml sayHello
ant -file hello.xml sayHello
ant -buildfile hello.xml sayHello
ANT元素

Project:ant的根元素,至少一个,否则报错。可包含多个target
name:表示project元素的名称
default:表示该project中默认执行的target
basedir:用于指定基本路径,默认为ant构件文件的父目录
测试代码如下:

  1. <?xml version="1.0"?> <project name="helloWorld" default="sayHello" basedir="D:\ANT\test"> <target name="sayHello"> <echo message="HELLO WORLD!"/> <echo message="basedir is ${basedir}"/> </target> </project>
复制代码

[attach]116298[/attach]

Project执行结果
如上,如果去掉代码中的basedir,执行结果basedir为D:\ANT(我的ant目录)
Target:ant的执行单元,可包括多个task
name:表示target的名称,唯一
depends:表示target之间的依赖关系,多个用","隔开,注意此时的执行顺序,被依赖的target会按照依赖的先后顺序先执行
if:验证属性是否存在,若不存在,所在target将不会执行
unless:与if相反,若不存在,所在target才执行
description:用于描述该target
测试代码如下:

  1. <p><?xml version="1.0"?></p><p><project name="targetTest" default="targetB"> <target name="targetA" if="ant.java.version"> <echo message="存在执行Java Version: ${ant.java.version}"/> </target> <target name="targetC" if="does't exist"> <echo message="不存在不执行"/> </target> <target name="targetD" unless="ant.java.version"> <echo message="存在不执行"/> </target> <target name="targetB" depends="targetA,targetC,targetD" unless="amigo"> <description> a depend example! </description> <echo message="不存在执行"/> </target> </project></p>
复制代码

[attach]116299[/attach]
Target执行结果
Property:用来定义参数,在task中用${属性名}来获取对应值。
以下是ant内置属性:
basedir:project目录
ant.file:buildfile的绝对路径
ant.version:ant的版本
ant.project.name:指定project的名称
ant.java.version:ant检测到的java版本
测试代码如下:
<?xml version="1.0"?> <project name="propertyTest" default="test"> <property name="name" value="HGirl"/> <property name="age" value="18"/> <target name="test"> <echo message="name: ${name}, age: ${age}"/> </target> </project>

[attach]116300[/attach]
ANT任务

copy:用于复制文件或者目录
测试代码如下:
  1. <p><?xml version="1.0"?> <project name="copyTest" default="test"> <target name="test"> <echo message="这是复制一个文件到当前目录"/> <copy file="build.xml" tofile="copy.txt"/> <echo message="这是复制一个文件目录,包括子文件目录"/> <copy todir="test3"> <fileset dir="test1"/> </copy> <echo message="这是将文件复制到另外的目录,todir不存在自动创建"/> <copy file="build.xml" todir="other/dir"/> </target> </project></p><p></p>
复制代码
[attach]116301[/attach]
原目录结构
[attach]116302[/attach]
delete:用于删除文件或目录
测试代码如下:
  1. <p>
  2. </p><p><?xml version="1.0"?></p><p><project name="copyTest" default="test"></p><p><target name="test"> <echo message="删除某文件"/> <delete file="copy.txt"/> <echo message="删除某个目录"/> <delete dir="test3"/> <echo message="删除所有的备份目录或空目录"/> <delete includeEmptyDirs="true"> <fileset dir="." includes="**/*.bak"/> </delete> </target> </project></p>
复制代码


mkdir:用于创建目录
测试代码如下:
<mkdir dir="build"/>

move:用于移动文件或目录
测试代码如下:
  1. <p><?xml version="1.0"?></p><p><project name="copyTest" default="test"></p><p><target name="test"> <echo message="移动某文件"/> <move file="build.xml" tofile="tofile.txt"/> <echo message="移动某个文件到某个目录"/> <move file="move.txt" todir="test"/> <echo message="移动某个目录到另一个目录"/> <move todir="test4"> <fileset dir="test1" /> </move> </target> </project></p>
复制代码

[attach]116303[/attach]
[attach]116304[/attach]
注意:由上图,我们可以发现,不管是单文件还是包含子文件的文件夹,如果是在原目录,相当于改名称。

echo:用于根据任务或监控器的级别输出信息
由于上面的例子已经包含echo,所以这里不再做多解释。

javac:可用来编译java程序
核心代码:<javac srcdir="src" destdir="build/classes"/>
测试代码如下:
  1. <p><?xml version="1.0"?></p><p><project name="javacTest" default="test"> <target name="clean"> <delete dir="build"/> </target> <target name="test" depends="clean"> <mkdir dir="build/classes"/> <javac srcdir="src/com/company" destdir="build/classes"/> </target> </project></p>
复制代码

[attach]116305[/attach]
javac执行结果

注意:javac的srcdir属性一定要把路径写全。

java:用于运行java程序
测试代码如下:
  1. <p><?xml version="1.0"?></p><p><project name="javaTest" default="run" basedir="."> <target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <mkdir dir="build/classes"/> <javac srcdir="src/com/company" destdir="build/classes"/> </target> <target name="run" depends="compile"> <java classname="com.company.Main"> <classpath> <pathelement path="build/classes"/> </classpath> </java> </target> </project></p>
复制代码
[attach]116306[/attach]

java执行结果
jar:用于把项目生成jar包
测试代码如下:
  1. <p><?xml version="1.0"?></p><p><project name="jarTest" default="jar" basedir="."> <target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <mkdir dir="build/classes"/> <javac srcdir="src/com/company" destdir="build/classes"/> </target> <target name="run" depends="compile"> <java classname="com.company.Main"> <classpath> <pathelement path="build/classes"/> </classpath> </java> </target> <target name="jar" depends="run"> <jar destfile="main.jar" basedir="build/classes"/> </target> </project></p>
复制代码


jar执行结果







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2