`
tang9140
  • 浏览: 35068 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ant之build.xml详解

 
阅读更多

最近项目中用到了ant构建项目,由于之前一直用的maven,没接触过ant,就抽空补了下ant相关知识。下面分三部分介绍ant:

  • ant安装
  • ant命令
  • build.xml配置详解

ant安装

直接上官网下载ant包ant官网,最新包是apache-ant-1.9.4-bin.zip。将其解压到某个目录,我的放置在E:\develop目录下

然后配置环境变量,增加系统变量ANT_HOME,值为ant的解压目录(本机目录为E:\develop\apache-ant-1.9.2,修改系统变量Path,追加%ANT_HOME%\bin。

然后打开cmd窗口,输入命令ant -version。若正常显示ant版本信息,表示安装成功。

ant命令

输入ant -h命令可查看帮助文档如下:

ant [options] [target [target2 [target3] ...]]
Options:
  -help, -h              print this message
  -projecthelp, -p       print project help information
 ……

选项有很多,下面说明常用的几个选项。

-projecthelp, -p 打印项目帮助信息
-buildfile <file> 指定buildfile文件名(默认在当前目录下查找build.xml)
-file      <file> 同上
-f         <file> 同上
-lib <path> 指定类路径

[target]不指定时,会执行buildfile中的默认target

build.xml配置详解

build.xml就是一个XML文件,它包含一个project节点和至少一个target节点,target节点包含多个task元素。简单说,target节点代表着你的构建目标,而该目标是由多个操作/任务(task)来达成的。

文字描述比较枯燥,下面以简单的java项目为例,说明如何通过ant发布jar包。

在eclipse中新建一个java项目,结构如下
项目结构图
HelloAnt.java内容为:

package com.tq.ant;

import org.apache.commons.lang.StringUtils;

/**
 * @version 1.0
 * @author tangqian
 */
public class HelloAnt {

    public boolean isBlank(String str){
        return StringUtils.isBlank(str);
    }

    public static void main(String[] args) {
        System.out.println("Hello ant!");
    }

}

其中成员方法isBlank引用到commons-lang-2.5.jar中StringUtils.isBlank()方法。

jdbc.properties包含数据库连接配置信息如下:

driverClassName=com.mysql.jdbc.Driver
db.mysql.url=jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=utf8
db.mysql.username=root
db.mysql.password=root

该项目通过ant打包发布,build.xml包含内容如下

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build" name="ant_test">
    <property name="lib" value="E:/workspace/bi_mr_STB/lib" />
    <path id="ant_test.classpath">
        <pathelement location="bin" />
        <pathelement location="${lib}/commons-lang-2.5.jar" />
    </path>
    <target name="init">
        <mkdir dir="bin" />
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="src">
                <exclude name="**/*.java" />
            </fileset>
        </copy>
    </target>
    <target depends="init" name="build">
        <echo message="${ant.project.name}: ${ant.file}" file="www.txt" />
        <javac destdir="bin" debug="true" includeantruntime="false">
            <src path="src" />
            <classpath refid="ant_test.classpath" />
        </javac>
    </target>
    <target depends="build" name="dist">
        <jar destfile="hello-ant.jar" basedir="bin">
            <manifest>
                <attribute name="Main-Class" value="com.tq.ant.HelloAnt" />
            </manifest>
        </jar>
    </target>
    <target name="clean">
        <delete dir="bin" />
        <delete file="hello-ant.jar" />
    </target>
</project>

下面详解各节点及属性含义:

project

根节点,代表一个工程
属性说明:
name 表示工程名称
basedir 表示基准目录(值为”.”代表当前目录,即build.xml所在目录,也可采用绝对路径)
default 表示默认运行的target(当ant命令没有指定target时,会运行default属性中的target)

target

目标节点,代表着一个构建目标
属性说明:
name 表示目标名称
depends 表示依赖的target。像上例中,dist依赖build,build依赖init,也就是说,当ant运行dist这个target时,会根据依赖关系先运行build,build又会先运行init,各个target的执行次序是init->build->dist。即逻辑上的先执行初始化操作,然后进行源代码编译,最后将class文件打成jar包的过程。

property

设置一个或多个属性(可以在其它地方通过${属性名}进行引用)
属性说明:
name 表示属性名(区分大小写)
value 表示属性值
file 表示要加载的属性文件路径(该文件可包含多个属性,类似jdbc.properties的内容)

下面接着说明各个target中tasks含义

mkdir

创建目录
属性说明:
dir 表示要创建目录

delete

删除目录或文件
属性说明:
dir 表示要删除的目录,该目录下的文件和子目录都会被删除
file 表示要删除的文件

echo

向屏幕或文件输出信息
属性说明:
message 表示要输出的信息
file    表示信息输出到该文件中(如果指定了该属性,信息将不会在屏幕上显示)
level   表示信息级别(未指定该属性时的默认级别为"warning"

copy

拷贝文件或目录
属性说明:
todir            表示拷贝到哪个目录下
includeemptydirs 是否拷贝空目录
file             要拷贝的单个文件(只针对单个文件的拷贝,上例中没有指定该属性,而是通过内嵌<fileset>来指定多个文件)

javac

编译源文件
属性说明:
srcdir    源文件路径(多个源之间用:分隔,可通过内嵌<src>元素进行设定,如上例)
destdir   存放编译后的class文件路径
includes  包含的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。该属性省略时,所有的.java文件被包含进去
excludes  排除的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。
debug     编译时是否显示调试信息
includeantruntime 是否包含ant库路径
classpath 依赖库路径(上例中通过内嵌<classpath>元素进行了设定)

jar

class文件打成jar
属性说明:
destfile  将创建的jar包位置
basedir   将被打成jar包的目录(或通过内嵌的<fileset>元素进行设定)
includes  包含的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。该属性省略时,所有的文件被包含进去
excludes  排除的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。
可内嵌<manifest>元素,通过设定Main-Class属性来设定jar包的入口类(如上例)

Resource Collections

ant中经常需要指定资源集合,主要通过下面元素指定
fileset

属性说明:
dir    文件集合的根目录(该目录下的文件都会被包含)
file   快捷指定单个文件
includes  包含的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。该属性省略时,所有的文件被包含进去
excludes  排除的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。
casesensitive 指定包含或排除模式匹配时是否区分大小写,默认区分
可内嵌<include><exclude><patternset><filename>等元素

patternset

模式集合
属性说明:
id 唯一标识(其它<patternset>元素通过refid指向该模式)
可内嵌<include><exclude><includesfile><excludesfile>等元素

include
exclude

指定单个模式(包含或排除)
属性说明:
name 要包含或排除的模式

includesfile
excludesfile

指定模式文件
属性说明:
name 模式文件名(文件内容为包含或排除模式)

Path-like Structures

在通过ant运行java类,或执行编译时,都需要指定classpath,可通过下面三个元素来指定引用的jar包或class文件

classpath

类路径,内嵌在<javac>,<java>等元素中,表示依赖库路径
属性说明:
refid    指向该id对应的元素
location 单个文件或目录(目录可以是相对路径或绝对路径,相对路径是指相对于工程的基准路径)
path     多个location的集合(各location以冒号或分号进行分隔),一般用来引用预定义的路径,如引用环境变量${classpath}
其它说明:
可内嵌<fileset><pathelement>等元素来指定jar文件或目录

path

类路径集合,被<classpath>或其它<path>引用。
path用法类似<classpath>元素,但是<path><target>同级,而classpath是内嵌在<java><javac>元素中。

pathelement

单个类路径,内嵌在<classpath><path>中
属性说明
location 单个文件或目录(目录可以是相对路径或绝对路径,相对路径是指相对于工程的基准路径)
path     多个location的集合(各location以冒号或分号进行分隔),一般用来引用预定义的路径,如引用环境变量${classpath}
<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    ant的build.xml模板

    《Ant的build.xml模板详解与应用》 在软件开发领域,构建工具是不可或缺的一部分,它帮助开发者自动化地完成编译、测试、打包等任务。Apache Ant作为Java领域的一款经典构建工具,以其灵活性和强大的功能深受广大...

    Ant之build.xml详解

    可能有些读者并不连接什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令。当编译Linux内核及一些软件的源程序时,经常要用这个命令。Make命令其实就是一个项目管理工具,而Ant所实现...

    ant打包ant的build.xml的详解

    Ant 打包 ant 的 build.xml 详解 Ant 是一个流行的自动化构建工具,广泛应用于软件开发和项目自动化构建中。本文将详细介绍 Ant 的环境变量配置和 build.xml 文件的配置详解。 第一步:安装 Apache Ant 在开始...

    ant build.xml 详解

    《Ant build.xml详解——构建Java项目的关键》 Apache Ant,作为一个开源的自动化构建工具,是Java开发者不可或缺的利器。它的核心在于一个名为`build.xml`的配置文件,它定义了项目的构建过程,包括编译、测试、...

    ANT-build.xml命令详解

    **ANT-build.xml命令详解** Apache Ant 是一个Java平台上的开源构建工具,它通过XML格式的配置文件(如`build.xml`)来定义构建任务。Ant的设计理念是“简单就是美”,它使得Java项目的构建过程变得可配置且易于...

    ANT-build.xml文件详解

    ### ANT-build.xml 文件详解 #### Ant 的概念及与 Make 的比较 Ant 是一款开源的 Java 构建工具,它的设计理念主要是解决 Make 工具在跨平台应用中存在的问题。对于熟悉 Linux 的用户而言,Make 命令作为一种项目...

    ant build.xml文件详解

    Ant build.xml 文件详解 Ant 是一个项目管理工具,相比make命令,gnumake和nmake等编译工具,Ant克服了这些工具的缺陷。Ant 的优点包括跨平台性、操作简单、易于集成到开发环境中。Ant 的构建文件是 XML 格式的文件...

    build.xml详解

    ### build.xml详解 #### 概述 `build.xml` 是 Apache Ant 构建工具的核心配置文件,用于自动化软件构建过程中的各种任务。本篇将基于提供的 `build.xml` 文件示例,详细介绍其结构、语法以及如何通过配置实现自动化...

    Jmeter+ant实现测试报告build.xml和报告模板jmeter-results-newreport.xsl

    3. **build.xml文件详解**:`build.xml`是Ant的构建文件,其中包含了一系列的任务和目标。例如,你可以定义一个目标来启动JMeter,另一个目标来生成测试报告,甚至还有一个目标用来发送测试结果的邮件通知。在描述中...

    ANT-build.xml文件详解.doc

    《ANT-build.xml文件详解》 Ant 是一个广泛应用于Java项目的自动化构建工具,它的核心在于一个名为`build.xml`的XML文件,此文件定义了构建过程中的各种任务和目标,使得项目构建过程规范化、自动化。本文将深入...

    jmeter+ant所需要的build.xml文件

    第一次做jmeter+ant自动化接口测试,需要build文件,开始直接copy博客中的内容,格式不对,调试好久不成功;后发现在jmeter/extras文件夹中有一个build文件,copy出来根据需要修改下,成功了,特上传自选供大家使用...

    ant 较完整的build.xml解释

    ### ant 较完整的build.xml解释 #### 一、Ant简介及优势 Ant 是一款开源的构建工具,主要用于Java项目的构建和部署。与传统的构建工具如Make相比,Ant具有诸多优势,尤其是在跨平台方面表现突出。Ant的核心优势...

    Ant build.xml详解

    Ant build.xml 详解 Ant 是一个基于 Java 语言的编译工具,它的主要功能是自动化项目的编译和构建过程。Ant 的出现是为了克服 make 和其他编译工具的缺陷,它具有跨平台性、操作简单、易于维护和书写、结构清晰等...

    ant build.xml编写

    《Ant build.xml构建详解》 在软件开发过程中,构建工具起着至关重要的作用,它能够自动化执行编译、测试、打包等任务。Apache Ant是Java领域广泛应用的一个构建工具,其核心在于一个名为`build.xml`的配置文件。...

    ANT-build-xml文件详解

    【ANT-build.xml文件详解】 ANT-build.xml文件是Apache Ant构建工具的核心配置文件,它使用XML格式定义了构建项目的所有步骤和任务。Ant是Java社区广泛使用的自动化构建工具,它的主要优势在于跨平台性、易用性和...

    ant的配置文件build.xml

    在Ant的世界中,`build.xml`是核心配置文件,它包含了项目构建的所有指令和任务。这篇内容将深入解析`build.xml`文件的结构、元素以及如何使用它来管理Java项目的构建过程。 一、`build.xml`文件结构 `build.xml`...

    bulid.xml详解

    《Ant的build.xml详解》 Ant,作为Java领域的一个强大构建工具,它的核心在于XML格式的build.xml文件,这是整个项目构建的蓝图。对于熟悉Linux的用户,Ant类似于make工具,但比之更加灵活和易用,克服了make等工具...

    build.xml配置文件

    直接使用于eclipse开发项目。用ant管理开发,快速部署到tomcat中webapps下。直接放到根路径里。 使用前请修改下配置。

Global site tag (gtag.js) - Google Analytics