`
zhaohaolin
  • 浏览: 985921 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ant教程详解

    博客分类:
  • ant
阅读更多

  ant教程详解--javac,java,jar,war,delete,copy,mkdir,move等指令 zz 收藏

   原文地址: http://tech.it168.com/j/2007-11-09/200711091344781.shtml
        本文请勿转载!

       Ant 是一个 Apache 基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将 Ant 应用到 Java 项目中,让它简化构建和部署操作。

一.              安装与配置

下载地址: http://ant.apache.org/ ,在本文中下载的是 1.7.0 版本。解压到某个目录(例如 E:"apache-ant-1.7.0 ),即可使用。

添加系统环境变量: ANT_HOME ,该变量指向 Ant 解压后的根目录,在此为 E:"apache-ant-1.7.0

安装与配置完毕后,读者可以测试一下 Ant 是否可用,首先进入 Ant bin 目录,运行命令 ant –version ,若安装和配置成功,则会显示 Ant 版本信息,如下图所示:
   

由上可以看出,读者运行 Ant 的命令时,需要进入到 Ant bin 目录,如何才能让系统自动找到 Ant 呢?这时需要读者在系统环境变量 path 中添加 Ant bin 目录。设置完成后,我们就可以在任何目录(例如 C:"Documents and Settings"AmigoXie 目录)输入 Ant 的命令,来获得命令的运行结果。

二.              Ant 的关键元素

Ant 的构件文件是基于 XML 编写的,默认名称为 build.xml 。为了更清楚的了解 Ant ,在这里编写一个简单的 Ant 程序,用来展现 Ant 的功能,让读者对 Ant 有一个初步的了解。首先在 E 盘下建立一个 build.xml 文件,内容如下:

<? xml version="1.0" ?>
< project  name ="helloWorld">
       
< target  name ="sayHelloWorld">
              
< echo  message ="Hello,Amigo"/>
       
</ target >
</ project >

读者可以进入 E 盘,然后运行 ant sayHelloWorld ,可以看到如下的运行结果:
    

其中 sayHelloWorld 为需要执行的任务的名称。如果文件名不为 build.xml ,而为 hello.xml 时,读者运行同样的命令时,命令窗口会出现如下错误:

Buildfile: build.xml does not exist!

Build failed

由上面的命令的错误提示可以看出, ant 命令默认寻找 build.xml 文件。若文件名为 hello.xml 时,读者还需要对命令做少许改变,改为: ant –f hello.xml sayHelloWorld ant –buildfile hello.xml sayHelloWorld ant –file hello.xml sayHelloWorld

接下来开始向读者讲解本节的重点: Ant 的关键元素 project target property task

1.        project 元素

project 元素是 Ant 构件文件的根元素, Ant 构件文件至少应该包含一个 project 元素,否则会发生错误。在每个 project 元素下,可包含多个 target 元素。接下来向读者展示一下 project 元素的各属性。

1 name 属性

用于指定 project 元素的名称。

2 default 属性

用于指定 project 默认执行时所执行的 target 的名称。

3 basedir 属性

用于指定基路径的位置。该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。

下面给读者一个简单的例子来展示 project 的各元素的使用。修改 E:"build.xml 文件,修改后的内容如下:

<? xml version="1.0" ?>
< project  name ="projectStudy"  default ="sayBaseDir"  basedir ="E:" apache-ant-1.7.0" >
       
< target  name ="sayBaseDir">
              
< echo  message ="The base dir is: ${basedir}"/>
       
</ target >
</ project >

从上面的内容我们可以看出,在这里定义了 default 属性的值为 sayBaseDir ,即当运行 ant 命令时,若未指明执行的 target 时,默认执行的 target sayBaseDir ,同时还定义了 basedir 属性的值为 E:"apache-ant-1.7.0 ,进入 E 盘后运行 ant 命令,可看到运行的结果,如下图所示:
   

因为设定了 basedir 的值,所以 basedir 属性的值变成了读者设置的值。读者可以自行将 project 元素的 basedir 属性去掉后运行 ant 看看运行结果,此时 basedir 的值变成了 E:" ,即为 Ant 构件文件的父目录。

有的时候,读者可能有这种需求,即想得到某个 project 下所有的 target 的名称,读者可以通过在 ant 命令里加上 -proecthelp 来达到该目的。例如针对上述的例子我们运行 ant –projecthelp ,输出结果如下:

Buildfile: build.xml

Main targets:

Other targets:

 sayBaseDir

Default target: sayBaseDir

2.        target 元素

它为 Ant 的基本执行单元,它可以包含一个或多个具体的任务。多个 target 可以存在相互依赖关系。它有如下属性:

1 name 属性

指定 target 元素的名称,这个属性在一个 project 元素中是唯一的。我们可以通过指定 target 元素的名称来指定某个 target

2 depends 属性

用于描述 target 之间的依赖关系,若与多个 target 存在依赖关系时,需要以“ , ”间隔。 Ant 会依照 depends 属性中 target 出现的顺序依次执行每个 target 。被依赖的 target 会先执行。

3 if 属性

用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。

4 unless 属性

该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。

5 description 属性

该属性是关于 target 功能的简短描述和说明。

下面带领读者来看一个各属性综合使用的例子。修改 E:"build.xml 文件,修改后的内容如下:

<? xml version="1.0" ?>
< project  name ="targetStudy">
       
< target  name ="targetA"  if ="ant.java.version">
              
< echo  message ="Java Version: ${ant.java.version}"/>
       
</ target >
       
< target  name ="targetB"  depends ="targetA"  unless ="amigo">
              
< description >
                            a depend example!
              
</ description >
              
< echo  message ="The base dir is: ${basedir}"/>
       
</ target >
</ project >

进入 E 盘后运行 ant targetB ,可看到如下图所示的运行结果:
   

读者分析结果后可以看到,我们运行的是名为 targetB target ,因该 target 依赖于 targetA ,所以 targetA 将首先被执行,同时因为系统安装了 java 环境,所以 ant.java.version 属性存在,执行了 targetA 这个 target ,输出信息: [echo] Java Version: 1.5 targetA 执行完毕后,接着执行 targetB ,因为 amigo 不存在,而 unless 属性是在不存在时进入所在的 target 的,由此可知 targetB 得以执行,输出信息: The base dir is: E:"

3.        property 元素

该元素可看作参量或者参数的定义, project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。若要在外部引入某文件,例如 build.properties 文件,可以通过如下内容将其引入: <property file=” build.properties”/>

property 元素可用作 task 的属性值。在 task 中是通过将属性名放在“ ${ ”和“ } ”之间,并放在 task 属性值的位置来实现的。

Ant 提供了一些内置的属性,它能得到的系统属性的列表与 Java 文档中 System.getPropertis() 方法得到的属性一致,这些系统属性可参考 sun 网站的说明。

同时, Ant 还提供了一些它自己的内置属性,如下:

basedir project 基目录的绝对路径,该属性在讲解 project 元素时有详细说明,不再赘述;

ant.file buildfile 的绝对路径,如上面的各例子中, ant.file 的值为 E:"build.xml

ant.version Ant 的版本,在本文中,值为 1.7.0

ant.project.name :当前指定的 project 的名字,即前文说到的 project name 属性的值;

ant.java.version Ant 检测到的 JDK 的版本,在上例运行结果中可看到为 1.5

下面让读者来看一个 property 元素使用的简单例子。修改 E:"build.xml 文件,内容如下:

<? xml version="1.0" ?>
< project  name ="propertyStudy"  default ="example">
< property  name ="name"  value ="amigo"/>
< property  name ="age"  value ="25"/>
< target  name ="example">
        
< echo  message ="name: ${name}, age: ${age}"/>
</ target >
</ project >

该例的运行结果如下图所示:
   

由此读者可以看出,通过如下两个语句:

<property name="name" value="amigo"/>

<property name="age" value="25"/>

我们设置了名为 name age 的两个属性,这两个属性设置后,读者在下文中可以通过 ${name} ${age} 分别取得这两个属性的值。

三.              Ant 的常用任务

Ant 工具中每一个任务封装了具体要执行的功能,是 Ant 工具的基本执行单位。在本小节中,主要引导读者来看下 Ant 的常用任务及其使用举例。

1.        copy 任务

该任务主要用来对文件和目录的复制功能。举例如下:

Eg1. 复制单个文件: <copy file="file.txt" tofile="copy.txt"/>

Eg2. 对文件目录进行复制:

   <copy todir="../newdir/dest_dir">

            <fileset dir="src_dir"/>

 </copy>

Eg3. 将文件复制到另外的目录:

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

2.        delete 任务

对文件或目录进行删除,举例如下:

Eg1. 删除某个文件: <delete file="photo/amigo.jpg"/>

Eg2. 删除某个目录: <delete dir="photo"/>

Eg3. 删除所有的备份目录或空目录:

        <delete includeEmptyDirs="true">

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

        </delete>

3.        mkdir 任务

创建目录。 eg <mkdir dir="build"/>

4.        move 任务

移动文件或目录,举例如下:

Eg1. 移动单个文件: <move file="fromfile" tofile=”tofile”/>

Eg2. 移动单个文件到另一个目录: <move file="fromfile" todir=”movedir”/>

font-siz

分享到:
评论

相关推荐

    ant 教程详解

    介绍了用ANT编译JAVA 项目 的使用,及示例,及XML文件的构建

    Ant教程详解

    对于想学习Ant的同学会比较有用,里面说得比较详细,入门比较快。

    J2EE JNDI配置原理详解 JBOSS安装配置 Maven入门 Ant使用入门

    1.8 Tomcat5启动流程与配置详解 1.9 HttpServlet详解 1.10 Ant使用入门 1.11 Maven Ant之间的比较 1.12 详解MANIFEST.MF文件 1.13 Maven入门--概念与实例 1.14 Subversion 1.15 jar war ear区别 1.16 如何在...

    Maven权威指南 很精典的学习教程,比ANT更好用

    坐标详解 9.5.2. 多模块项目 9.5.3. 项目继承 9.6. POM最佳实践 9.6.1. 依赖归类 9.6.2. 多模块 vs. 继承 9.6.2.1. 简单项目 9.6.2.2. 多模块企业级项目 9.6.2.3. 原型父项目 10. 构建生命周期 10.1...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本博客提供的所有教程的资源原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从...

    详解java解压缩zip和rar的工具类使用教程

    详解java解压缩zip和rar的工具类使用教程直接上代码 package decompress;  import java.io.File;  import java.io.FileOutputStream;  import org.apache.tools.ant.Project;  import org.apache.tools.ant...

    iuhyiuhkjh908u0980

    ant配置文件实例详解 build.xml 代码 xml version="1.0" encoding="UTF-8"?&gt; &lt;!-- name:对应工程的名字;default:需要的缺省任务(运行"ant"不指明任务时执行的任务) --&gt; by duzn 2007-04-02 回复 (0) Antenna与j2me...

    Eclipse+Web开发从入门到精通(实例版)

    第2篇 Web开发技术实例详解 第4 章 在 Eclipse 中进行资源构建 ——Ant 使用实例... 60 4.1 Ant 简介... 60 4.1.1 构造文件的主要标记... 60 4.1.2 Ant 的常用任务(Task)... 62 4.2 Eclipse 与Ant ...

    详解VUE项目中安装和使用vant组件

    Vant 是有赞前端团队基于有赞统一的规范实现的 Vue 组件库,提供了一整套 UI 基础组件和业务组件。 特性 50+ 个经过有赞线上业务检验的组件 单元测试覆盖率超过 90% 完善的中英文文档和示例 ...

    jTester使用指南(带书签).pdf

    ant用户安装 安装TestNG插件 编写一个简单的测试用例 maven方式运行 第 2 章 TestNG语法简介 TestNg注解介绍 TestNg 参数化测试 异常测试 TestNg分组测试和suite文件编写 第 3 章 jTester断言介绍 什么是测试...

    xmljava系统源码-GradleDemo:Gradle插件开发极简教程

    #Gradle入门教程 #一、简介 Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言。Gradle 通过提供可以随意集成的声明式语言元素将声明性构建推到了一个新的高度。...

    详解如何搭建mpvue框架搭配vant组件库的小程序项目

    使用 Vant Weapp 前,请确保你已经学习过微信官方的小程序简易教程 和自定义组件介绍 安装 方式一. 通过 npm 安装 (推荐) 小程序已经支持使用 npm 安装第三方包,详见npm 支持 # npm npm i vant-weapp -S --...

    swing界面设计之JTree

    关于本教程 5 前提条件 6 Spring 和依赖注入概述 7 什么是 Spring 框架? 7 什么是依赖注入? 7 环境设置 7 选择编译环境 7 设置 Ant 8 通过 Ant 自动下载依赖软件 10 设置 Maven 10 通过 Maven 自动下载依赖软件 12...

    maven window下安装包

    易学笔记-maven教程目录 第1章:Maven概述/1.1 Maven的概念 第1章:Maven概述/1.2 Maven的功能 第1章:Maven概述/1.3 与其它构建相比/1.3.1 Make 第1章:Maven概述/1.3 与其它构建相比/1.3.2 Ant 第2章:Maven的...

    autoJS1688示例.zip

    getPixels参数详解.js gitee-webhook.js git常用命令.js gpsui.js gps时间获取.js HAHA小视频无限撸money(无解说).js hello语音刷房脚本(雷电).js hl4a.js HTTP请求.js http超时返回null.js ID3...

Global site tag (gtag.js) - Google Analytics