ANT初阶
安装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构件文件的父目录
测试代码如下:
<?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
测试代码如下:
<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:用于复制文件或者目录
测试代码如下:
<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:用于删除文件或目录
测试代码如下:
<p>
</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:用于移动文件或目录
测试代码如下:
<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"/>
测试代码如下:
<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程序
测试代码如下:
<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包
测试代码如下:
<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执行结果
页:
[1]