ant 脚本编译运行java应用
下面的代码是一个简单的ant 脚本用于java 应用编译示例:
<?xml version="1.0" encoding="UTF-8"?>
<project name="JavaTest" default = "anttest">
<property name="src.dir" value="src" />
<property name="dest.dir" value="dest" />
<target name="prebuild">
<mkdir dir="${dest.dir}" />
<delete dir="${dest.dir}" />
<mkdir dir="${dest.dir}" />
</target>
<target name="build">
<echo> build begin ...</echo>
<javac srcdir="${src.dir}" destdir="${dest.dir}" includeantruntime = "false"/>
<echo> build end ...</echo>
</target>
<target name="run">
<echo>run begin ...</echo>
<java classname="com.example.test.Test">
<classpath>
<pathelement path="${dest.dir}" />
</classpath>
</java>
<echo>run end ...</echo>
</target>
<target name="anttest" depends="prebuild , build ,run"></target>
</project>
运行结果:
1.1 在Eclipse 的ant 窗口运行
双击javaTest 的图标时,默认的是选择<project name="JavaTest" default = "anttest"> 中的target 作为入口 。
如果project没有配置default 属性,双击图标运行脚本的时候不会执行的任何target 。但是可以双击下面的target name直接运行target 。
1.2 在命令行中运行
进入build.xml目录,输入 ant ,脚本会默认执行该目录下build.xml文件中的target ;
使用ant -f filename targetname 的方式,可以执行filename 文件下的targetname 任务 ;
2. 脚本的运行流程分析
2.1 JavaTest project
project 中定义了anttest ,prebuild ,run 三个 target ;
两个属性,src.dir和dest.dir ;类似于全局变量的存在,使用的时候可以${}进行调用。
2.2 anttest target
运行脚本后,运行的target 顺序是:prebuild ,build ,run ;它们的执行先后是由target 的depends属性决定的,需要多个target 作为执行前提的时候, 脚本会按脚从左往右的顺序依次执行之前的任务,然后执行该target 。
示例中的depends属性还可以写成:
<target name="build" defealt = "prebuild">
<target name="run" defealt = "build">
<target name="anttest" defealt = "run">
2.3 prebuild target
prebuild 任务的作用是删除上次生成的目标文件及新建目标文件存放目录;
2.4 build target
<javac srcdir="${src.dir}" destdir="${dest.dir}" includeantruntime = "false"/>
调用java 提供的javac 命令进行编译
2.5 run target
调用java 命令运行生成的class 文件 。
3. 命令介绍
3.1 delete 命令
删除 文件: <delete file="filepath"/>
删除目录:<delete dir="dirpath"/>
删除某种文件类型,example:
<delete>
//删除当前文件夹下后缀为.bak的所有文件 <fileset dir="." includes="**/*.bak"/> </delete>
3.2 mkdir 命令
创建目录:<mkdir dir="dirpath"/>
3.3 property
创建一个变量: <property name="propertyname" value="propertyvalue"/>
从外部xxxx.properties文件中导入一些列的property值:<property file="xxxx.properties"/>
3.4 参考文档:
http://ant.apache.org/manual/index.html