到目前为止,我们已经掌握了Ant生成文件的基本结构,以及<project.../>,<target.../>,<property.../>等元素的配置方式。而<target.../>元素的核心就是task,即每个<target.../>由一个或多个task组成。

  Ant提供了大量核心的task和可选的task ,除此之外,Ant还允许用户定义自己的task,这大大扩展了Ant的功能。

  下面介绍几个常用的核心 task

  》javac:    用于编译一个或多个Java源文件,通常需要srcdir和destdir两个属性,用于指定Java源文件的位置和编译后class文件的保存位置。

  》java:   用于运行某个Java类,通常需要classname属性,用于指定需要运行那个类。

  》jar:   用于生成JAR包,通常需要指定destfile属性,用于指定所创建JAR包的文件名。除此之外,通常还应指定一个文件集,表明需要将那些文件打包到JAR包里。

  》sql:    用于执行一条或多条SQL语句,通常需要driver,url,userid和password等属性,用于指定连接数据库的驱动类,数据库URL,用户名和密码等,还可以通过src来指定需要指定的SQL脚本文件,或者直接用文本内容的方式指定SQL脚本字符串。

  》echo:  输出某个字符串。

  》exec:  执行操作系统的特定命令,通常需要executable属性,用于指定想执行的命令。

  》copy:  用于复制文件或路径。

  》delete: 用于删除文件或路径。

  》mkdir:  用于创建文件夹。

  》move:  用于移动文件和路径。

  查看Ant的文档,理解详细介绍了所有Ant的核心任务以及可选任务。

  下面定义了一份简单的生成文件,这份生成文件包含了编译Java文件,运行Java程序,生成JAR包等常用的target,通过这份文件就可以非常方便的管理该项目。

 <?xml version='1.0' encoding='utf-8'?>
<!--定义生成文件的project根元素,默认的target为空-->
<project name="Demo" default="" basedir=".">
<!--定义三个简单的属性-->
<property name="src" value="src"/>
<property name="classes" value="classes"/>
<property name="dest" value="dest"/>
<!--定义一组文件盒目录集-->
<path id="classpath">
<pathelement path="${classes}"/>
</path>
<!--定义help target,用于输出该生成文件的帮助信息-->
<target name="help" description="打印帮助信息">
<echo>hep -打印帮助信息</echo>
<echo>compile -编译Java源文件</echo>
<echo>run -运行程序</echo>
<echo>build -打包JAR包</echo>
<echo>clean -清除所有编译生成的文件</echo>
</target>
<!--定义compile target,用于编译Java源文件-->
<target name="compile" description="编译Java源文件">
<!--先删除classes属性所代表的的文件夹-->
<delete dir="${classes}"/>
<!--创建classes所代表的文件夹-->
<mkdir dir="${classes}"/>
<!--编译Java源文件,编译后的classes文件放到classes属性所代表的文件夹-->
<javac destdir="${classes}" debug="true"
includeantruntime="true" deprecation="false"
optimize="false" failonerror="true">
<!--指定需要编译的Java文件所在的位置-->
<src path="${src}"/>
<!--指定编译Java文件所需要第三方类库所在的位置-->
<classpath refid="classpath"/>
</javac>
</target>
<!--定义run target,用于运行Java源文件-->
<target name="run" description="运行程序" depends="compile">
<!--运行demo.Demo类,其中fork指定启动另一个JVM来执行java命令-->
<java classname="demo.Demo" fork="yes" failonerror="true">
<classpath refid="classpath"/>
<!--运行Java程序同时传入两个参数-->
<arg line="测试参数1 测试参数2"/>
</java>
</target>
<!--定义build target,用于打包JAR文件 运行该target之前会先运行compile target-->
<target name="build" description="打包JAR文件" depends="compile">
<!--先删除dest属性所代表的文件夹-->
<delete dir="${dest}"/>
<!--创建dest属性所代表的文件夹-->
<mkdir dir="${dest}"/>
<!--指定将classes属性所代表的文件夹的所有.classes文件都打包到app.jar文件中-->
<jar destfile="${dest}/app.jar" basedir="${classes}"
includes="**/*.classes">
<!--为JAR包的清单文件添加属性-->
<manifest>
<attribute name="Main-class" value="demo.Demo"/>
</manifest>
</jar>
</target>
<!--定义clean target 用于删除所有编译生成的文件-->
<target name="clean" description="清除所有编译生成的文件">
<!--删除两个目录,目录下的文件也一并删除-->
<delete dir="${classes}"/>
<delete dir="${dest}"/>
</target>
</project>

  上面的生成文件中定义java task时 用到了 fork="true"(或fork="yes"效果也一样),这表明启动另一个JVM进程来运行demo.Demo类,这个属性通常是个陷阱!如果不指定该属性,该属性的默认值时false,这表明使用运行Ant的同一个JVM来运行Java程序,这将导致随着Ant工具执行完成,被运行的Java程序也不得不退出——这是我们所不希望看到的结果。

  上面的配置定义的生成文件里包含了5个target,这些target分别完成打印帮助信息,编译Java文件,运行Java程序,打包JAR包和清除编译中生成的文件。执行这些target可使用如下命令:

  》ant hep:  输出生成文件的帮助信息。

  》ant compile:  编译Java文件。

  》ant run:  运行demo.Demo类。

  》ant build:  将classes路径下所有class文件打包成app.jar,并放在dest目录下。

  》ant clean:  删除classes和dest两个目录。

Ant快速入门(四)-----Ant的任务(Task)的更多相关文章

  1. Ant快速入门(一)-----Ant介绍

    Ant是一种基于Java的生成工具.从作用上来看,它类似于C编程(UNIX平台上使用比较多)的Make工具,C/C++项目经常使用Make工具来管理整个项目的编译,生成 Make使用Shell命令来定 ...

  2. Ant快速入门(二)-----使用Ant工具

    使用Ant非常简单,当正确安装Ant后,只要输入ant或ant.bat即可. 如果运行ant命令时没有指定任何参数,Ant会在当前目录下搜索build.xml文件.如果找到了就以该文件作为生成文件,并 ...

  3. AndroidStudio快速入门四:打造你的开发工具,settings必备

    http://blog.csdn.net/jf_1994/article/details/50085825 前言:这里是使用AS的基本设置,适合新入手的朋友阅读,将这里介绍的设置完基本使用无忧啦. 1 ...

  4. Ant快速入门(三)-----定义生成文件

    适应Ant的关键就是编写生成文件,生成文件定义了该项目的各个生成任务(以target来表示,每个target表示一个生成任务),并定义生成任务之间的依赖关系. Ant生成文件的默认名为build.xm ...

  5. mybatis快速入门(四)

    mybatis动态标签<where><if><foreach>以及sql片段 1.创建一个包装类UserQueryVo.java package cn.my.myb ...

  6. Solr.NET快速入门(四)【相似查询,拼写检查】

    相似查询 此功能会返回原始查询结果中返回的每个文档的类似文档列表. 参数通过QueryOptions的MoreLikeThis属性定义. 示例:搜索"apache",为结果中的每个 ...

  7. Dubbo快速入门 四

    4.业务场景 4.1).提出需求 某个电商系统,订单服务需要调用用户服务获取某个用户的所有地址: 我们现在 需要创建两个服务模块进行测试 模块 功能 订单服务web模块 创建订单等 用户服务servi ...

  8. MySql快速入门(四)

    在之前我们对MySql已经有了基本的了解,接下来我们就来接触MySql的分库分表,请往下阅读: 分库分表之MyCat实现 分库分表介绍: 随着微服务这种架构的兴起,我们应用从一个完整的大的应用,切分为 ...

  9. ELK快速入门(四)filebeat替代logstash收集日志

    ELK快速入门四-filebeat替代logstash收集日志 filebeat简介 Filebeat是轻量级单用途的日志收集工具,用于在没有安装java的服务器上专门收集日志,可以将日志转发到log ...

随机推荐

  1. 分页过滤SQL求总条数SQL正则

    public static void main(String[] args) throws Exception { String queryForScanUsers_SQL = "selec ...

  2. HDU 4287 Intelligent IME

    Intelligent IME Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  3. ie11只能用管理员身份打开解决办法

    解决IE11只能用管理员身份运行的问题 不知道大家有没有遇到这种情况,在毫不知情的情况下 IE11 突然打不开了,必须要用管理员身份运行才可以打开,而且重置浏览器这个方法也不奏效. 今天本人也遇到了, ...

  4. TI C66x DSP 系统events及其应用 - 5.10(创建ISR的三种情况)

    ISFP是服务中断的指令包,创建ISR的三种情况: 1.一个ISFP包的8条指令就能够满足ISR watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWl5ZW ...

  5. MYSQL 体系结构图-unzip_LRU

  6. Linux设备驱动编程之复杂设备驱动

    这里所说的复杂设备驱动涉及到PCI.USB.网络设备.块设备等(严格意义而言,这些设备在概念上并不并列,例如与块设备并列的是字符设备,而PCI.USB设备等都可能属于字符设备),这些设备的驱动中又涉及 ...

  7. linux (ubuntu) 下设置 tomcat 随系统自动启动

    网上说的有很多, 我只记录一种 1. 切换到 /etc/init.d/ 目录下 2. sudo vim tomcat 3. 在打开的文件里写入以下内容 #!/bin/sh # chkconfig: # ...

  8. HDU 4455(dp)

    题意:给定一个序列ai,个数为n.再给出一系列w:对于每个w,求序列中,所有长度为w的连续子串中的权值和,子串权值为子串中不同数的个数. 思路:动态规划,用dp[w]表示当前长度为w的时候的权值和.显 ...

  9. NYOJ2括号配对问题

    括号配对是最基本的栈的问题,它是栈入门的经典题目,思路是,如果是左括号直接进栈,如果是右括号,这时就要比较栈顶的元素与他是否匹配,如果匹配则出栈,否则进栈,下面是代码的实现: #include < ...

  10. Android 连接 SQL Server (jtds方式)——上

    本文将介绍开发Android程序,连接SQL Server,通过第三方包jtds的方式. 如果你有同样的需求,请跟着做一遍,博主将以最详细的方式,进行介绍. 首先说明,Java.Android连接SQ ...