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

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

常用的核心任务:

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

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

自动构建工具Ant的使用(四)_第1张图片

例如在目录下有如下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的使用(四)_第2张图片

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

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

antcall任务的属性如下所示:

例如在目录下有如下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的使用(四)_第3张图片

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

copy任务的属性如下所示:

自动构建工具Ant的使用(四)_第4张图片

例如:

复制单个文件:

<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的使用(四)_第5张图片

例如:

删除一个文件:

<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源文件,通常需要srcdirdestdir两个常用属性,用于指定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的使用(四)_第6张图片

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

自动构建工具Ant的使用(四)_第7张图片

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

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

运行的结果如下所示:

自动构建工具Ant的使用(四)_第8张图片

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

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

自动构建工具Ant的使用(四)_第9张图片

例如在目录下有如下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的使用(四)_第10张图片

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

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

自动构建工具Ant的使用(四)_第11张图片

例如在目录下有如下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的使用(四)_第12张图片

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

自动构建工具Ant的使用(四)_第13张图片

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

echo任务的属性如下所示:

自动构建工具Ant的使用(四)_第14张图片

例如:输出“HelloWorld”:

<echo message="HelloWorld"/>

输出一段话:

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

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

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

自动构建工具Ant的使用(四)_第15张图片

例如在目录下有如下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的使用(四)_第16张图片

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

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

例如在目录下有如下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的使用(四)_第17张图片

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

move的属性如下所示:

自动构建工具Ant的使用(四)_第18张图片

例如在目录下有如下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的使用(四)_第19张图片

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

javadoc任务的部分属性如下:

自动构建工具Ant的使用(四)_第20张图片

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

replace任务的属性如下所示:

自动构建工具Ant的使用(四)_第21张图片

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

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

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

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

tstamp任务的属性如下:

自动构建工具Ant的使用(四)_第22张图片

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

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

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

TODAY设置为当前日期,带完整的月份,如20121012日。

例如在目录下有如下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的使用(四)_第23张图片

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

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

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

自动构建工具Ant的使用(四)_第24张图片

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

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

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

unzip任务的属性如下所示:

自动构建工具Ant的使用(四)_第25张图片

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

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


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

cvs任务的属性如下所示:

自动构建工具Ant的使用(四)_第26张图片

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

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

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

自动构建工具Ant的使用(四)_第27张图片

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

你可能感兴趣的:(自动构建工具Ant的使用(四))