51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 7203|回复: 0
打印 上一主题 下一主题

ANT初阶

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-6-11 17:13:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
安装

ant下载地址
百度百科
配置系统环境变量ANT_HOME(指向ant解压目录 )

配置path环境变量

在cmd中进入ant的bin目录,输入ant –version检查是否安装成功

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可以看到结果如下图所示:


注意: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>
复制代码



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>
复制代码


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>


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>
复制代码

原目录结构

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>
复制代码



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

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>
复制代码


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>
复制代码


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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-6 12:09 , Processed in 0.072840 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表