读书人

自动构基建工具Ant的使用(四)

发布时间: 2012-10-19 16:53:36 作者: rapoo

自动构建工具Ant的使用(四)

写到有关Ant的博客第4篇了,ant中主要是任务,所以今天使用一下任务。Ant提供了大量的核心Task和可选Task,除此之外Ant还允许用户定义自己的task,这对于扩展Ant来说是非常好的。所以先总结一下一些常用的核心的任务。

常用的核心任务:

ant:该任务的含义是基于另一个构建文件中的一个目标调用Ant。

ant任务的属性如下图所示:

自动构基建工具Ant的使用(四)

例如在目录下有如下build.xml文件,该文件调用ant.xml构建文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="run" >      <target name="run">              <ant antfile="ant.xml"/>       </target></project>

ant.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?><project default="first">       <description>描述的信息</description>       <property name="hello" value="welcome"/>       <target name="first">              <mkdir dir="文件夹1"/>              <mkdir dir="文件夹2"/>              <mkdir dir="文件夹3"/>       </target></project>

运行结果如下所示:

自动构基建工具Ant的使用(四)

也可以在执行的时候调用另一个构建文件中的某个目标。

antcall:该任务的含义是调用当前构建文件中的另一个目标(target)。

antcall任务的属性如下所示:

自动构基建工具Ant的使用(四)

例如在目录下有如下build.xml文件,首先会执行antcall目标中的antcall任务,又会执行first目标如下所示:

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="antcall" >      <target name="antcall">              <antcall target="first"/>       </target>       <target name="first">              <mkdir dir="文件夹1"/>              <mkdir dir="文件夹2"/>              <mkdir dir="文件夹3"/>       </target></project>

运行结果如下所示:

自动构基建工具Ant的使用(四)

copy:该任务的含义是用于复制文件或目录。

copy任务的属性如下所示:

自动构基建工具Ant的使用(四)

例如:

复制单个文件:

<copy file="myfile.txt" tofile="mycopy.txt"/>

复制单个文件到指定的目录:

<copy file="myfile.txt" todir="../some/other/dir"/>

复制一个目录到另一个目录下:

<copy todir="../new/dir">    <fileset dir="src_dir"/></copy>

复制一批文件到另外一个目录下,其中fileset为文件集:

<copy todir="../dest/dir">    <fileset dir="src_dir">      <exclude name="**/*.java"/>    </fileset>  </copy>  <copy todir="../dest/dir">    <fileset dir="src_dir" excludes="**/*.java"/>  </copy>

复制一批文件到指定目录下,在文件名后增加.bak后缀:

<copy todir="../backup/dir">    <fileset dir="src_dir"/>    <globmapper from="*" to="*.bak"/></copy>

delete:该任务的含义是用于删除文件或目录。

delete任务的属性如下所示:

自动构基建工具Ant的使用(四)

例如:

删除一个文件:

<delete file="/lib/ant.jar"/>

删除指定目录及其子目录:

<delete dir="lib"/>

删除指定的一组文件:

<delete>    <fileset dir="." includes="**/*.bak"/></delete>

删除指定目录及其子目录:

<delete includeEmptyDirs="true">    <fileset dir="build"/></delete>

删除指定目录的子目录:

<delete includeemptydirs="true">    <fileset dir="build" includes="**/*"/></delete>

javac:该任务的含义是用于编译一个或多个Java源文件,通常需要srcdir和destdir两个常用属性,用于指定Java源文件的位置和编译后class文件的保存位置。由于javac任务的属性比较多,所以便没有截图。

例如在目录下有如下build.xml文件:

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="compile" >               <target name="compile">                               <mkdir dir="编译文件夹"/>                               <javac srcdir="." destdir="编译文件夹" includeantruntime="true"/>               </target></project>

运行结果如下所示:

自动构基建工具Ant的使用(四)

java:该任务的含义是用于运行某个java类,通常需要classname属性,指定需要运行的类。
java任务的属性如下所示:

自动构基建工具Ant的使用(四)

例如在目录下有如下build.xml文件:

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="run" >               <target name="run">                               <java classname="HelloWorld"/>               </target></project>

运行的结果如下所示:

自动构基建工具Ant的使用(四)

jar:该任务的含义是用于生成jar包,通常需要destfile属性和basedir属性,用于指定多创建的jar包的文件名和打成jar文件的路径。

jar任务的部分属性如下所示:

自动构基建工具Ant的使用(四)

例如在目录下有如下build.xml文件:

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="dabao" >               <target name="dabao">                               <mkdir dir="jar"/>                               <jar destfile="jar/long.jar" basedir="."/>               </target></project>:

运行的结果如下所示:

自动构基建工具Ant的使用(四)

sql:该任务的含义是用于执行一条或多条SQL语句,通常需要driver、url、userid、password属性,用于指定连接数据库的驱动类,数据库URL,用户名和密码等,还可以通过src来指定需要指定的SQL脚本文件,或者直接使用文本内容的方式指定SQL脚本字符串。如果jdbc的驱动程序在当前文件夹,没在环境变量中的化,需要指定classpath的路径。

sql任务的部分属性如下所示:

自动构基建工具Ant的使用(四)

例如在目录下有如下build.xml文件,该文件是通过sql任务用jdbc的方式去连接mysql数据库,并插入一条数据,其中classpath属性为驱动程序所在的位置:

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="db" >               <target name="db">                               <sql driver="com.mysql.jdbc.Driver"                                url="jdbc:mysql://localhost:3306/test"                                userid="root"                                password="longyu"                                classpath="mysql-connector-java-5.1.7-bin.jar">                                               insert into employee values('2010221000','Wang Chao','M',35,'');                                </sql>               </target></project>

运行之前的表数据结果如下所示:

自动构基建工具Ant的使用(四)

运行之后的表数据结果如下所示:

自动构基建工具Ant的使用(四)

echo:该任务的含义是用于输出某个字符串。

echo任务的属性如下所示:

自动构基建工具Ant的使用(四)

例如:输出“HelloWorld”:

<echo message="HelloWorld"/>

输出一段话:

<echo>This is a longer message stretching overthree lines; the first line is a blank</echo>

exec:该任务的含义是执行操作系统的特定命令,通常需要executable属性,用于指定想要执行的命令。

exec任务的部分属性如下所示:

自动构基建工具Ant的使用(四)

例如在目录下有如下build.xml文件,可以执行cmd命令,如下所示:

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="e" >               <target name="e">                               <exec executable="cmd"/>               </target></project>

运行结果如下所示:

自动构基建工具Ant的使用(四)

mkdir:该任务的含义是用于创建文件夹。

mkdir任务的属性只有一个dir,而且该属性是必须的,如下所示:

自动构基建工具Ant的使用(四)

例如在目录下有如下build.xml文件,该构件文件可以建立两个文件夹,如下所示:

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="m" >               <target name="m">                               <mkdir dir="folder1"/>                               <mkdir dir="folder2"/>               </target></project>

该构件文件的运行结果如下所示:

自动构基建工具Ant的使用(四)

move:该任务的含义是用来移动文件和目录,也可以用于重命名,只要移动同一个目录下,并指定相同的目录名就行了。

move的属性如下所示:

自动构基建工具Ant的使用(四)

例如在目录下有如下build.xml文件,将xx.zip文件和ant.xml文件分别移动到folder文件夹,如下所示;

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="mo" >               <target name="mo">                               <mkdir dir="folder"/>                               <move file="xx.zip" todir="folder"/>                               <move file="ant.xml" tofile="folder/moveant.xml"/>               </target></project>

结果如下所示:

自动构基建工具Ant的使用(四)

javadoc:该任务的含义是生成javadoc文档,在最新的ant1.8.4中,有javadoc2这个任务和javadoc使用是一样的。

javadoc任务的部分属性如下:

自动构基建工具Ant的使用(四)

replace:该任务的含义是用于执行文件中的查找和替换操作,其中token是要查找并替换的字符串,value是要替换的值。

replace任务的属性如下所示:

自动构基建工具Ant的使用(四)

例如替换11.xml文件中target字符串为name:

<replace file="11.xml" token="target" value="name"/>

tstamp:该任务的含义是生成时间戳。

该任务可以以某种方式标记某个生成任务的输出,以便记录它是何时生成的,这是经常可取的,它是根据当前的系统的时间和日期设置的。

tstamp任务的属性如下:

自动构基建工具Ant的使用(四)

在用的时候经常搭配几个时间的量,可以通过${DSTAMP}的方式去使用它,如下所示:

DSTAMP:设置为当前日期,默认格式是yyyymmdd,如20101010;

TSTAMP:设置为当前时间,默认格式是hhmm1603,如2014;

TODAY:设置为当前日期,带完整的月份,如2012年10月12日。

例如在目录下有如下build.xml文件,在生成jar文件的同时,在其名字上加上生成的日期,如下所示:

<?xml version="1.0" encoding="UTF-8"?><project name="FirstAnt"  basedir="."  default="ts" >               <target name="ts">                               <tstamp/>                                              <mkdir dir="jar"/>                                              <jar destfile="jar/long-${DSTAMP}.jar" basedir="."/>               </target></project>

运行的结果如下所示:

自动构基建工具Ant的使用(四)

从图中可以看到jar包的名已经加上生成的日期了。

zip:该任务的含义是用于创建一个zip文件。

Zip任务的部分属性如下所示:

自动构基建工具Ant的使用(四)

例如:将当前的目录下的所有文件压缩成zip,如下所示:

<zip destfile="manual.zip"basedir="."/>

unzip:该任务的含义是用于解压一个zip文件。

unzip任务的属性如下所示:

自动构基建工具Ant的使用(四)

例如解压zip文件到当前的文件夹:

<unzip src="tools-src.zip" dest="."/>


cvs:该任务的含义是用于执行CVS命令。

cvs任务的属性如下所示:

自动构基建工具Ant的使用(四)

由于现在对于cvs并不熟悉,带熟悉之后再进行使用。

war:该任务的含义是用于创建一个war文件。同理unwar就是解压war文件的。

war任务的部分属性如下所示:

自动构基建工具Ant的使用(四)

到这里ant的一些常用的核心任务的基本用法就结束了,我个人认为这些应该够目前的使用了,日后如果对ant有了什么新的了解还会写博客分享的。

读书人网 >其他相关

热点推荐