Ant的安装与使用

Ant是什么?

Ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具。Ant是一个Java库和命令行工具,可帮助构建软件。把源代码构建成一个可发布的项目。
功能:(如果刚接触,能理解才奇了怪了,先不去管它是什么,先会用)

  • Ant 是最完整的Java构建和部署工具。
  • Ant是平台无关的,可以处理特定平台的属性,如文件分隔符。
  • Ant 可以用于执行特定任务的平台,例如使用“触摸’命令修改文件的修改时间。
  • Ant 脚本使用的是纯XML编写的。如果你已经熟悉XML,你可以学习Ant 很快。
  • Ant擅长复杂的自动化重复的任务。
  • Ant 自带的预定义任务的大名单。
  • Ant提供了开发自定义任务的界面。
  • Ant可以在命令行中很容易地调用,它可以与免费的和商业的IDE集成。
Ant的下载和安装

安装Ant之前要安装jdk
登录https://ant.apache.org/bindownload.cgi,下载Ant最新版。建议windows系统下载zip压缩包,Linux下载.gz压缩包。
解压之后文件结构:
1、bin:启动和运行Ant的可执行命令。
2、etc:包含一些样式单文件,通常无需理会。
3、lib:包含Ant的核心类库以及编译和运行Ant的第三方类库。
4、manual:Ant工具的相关文档,对学习Ant很有帮助。

设置系统环境变量

新建环境变量ANT_HOME,变量值Ant安装路径。
在变量Path中加入 %ANT_HOME%/bin;
检验是否配置成功?
打开cmd控制台,输入ant.bat,如图所示即可。
在这里插入图片描述

使用Ant工具

1、在cmd控制台输入ant.bat即可,如果没有指定任何参数,系统会在当前目录下搜索build.xml文件,找到了就以该文件作为生成文件,并执行默认的target(生成文件和target先看下文)。
2、如果ant -s或者ant -find,Ant就会到上级目录中搜索生成文件,直到搜索到文件系统的根路径。
3、如果要使用其他生成文件,ant -buildfile<生成文件>或者ant -f<生成文件>或者ant -file<生成文件>
4、如果希望Ant运行时只输出少量信息,可以使用ant -quiel或者ant -q
5、如果希望Ant运行时输出更多的提示信息,可以使用ant -verbose或者ant -v
6、如果将运行时提示信息输出到指定文件,可以使用ant -l或者ant -logfile
7、Ant允许运行时指定一些属性来覆盖生成文件中中指定的属性值。ant -D=,value这个值代替property属性的值。
8、默认情况下,Ant将运行生成文件中指定的默认target,要使用希望的target,可以使用
ant [target [target1 [target2] …] ]
9、了解更多用法,ant -help

定义生成文件

先别急,这里只讲述怎么定义生成文件,记住了再想别的。
使用Ant最关键就是编写生成文件,生成文件定义了该项目的各个生成任务,每一个target表示一个生成任务(每一个生成任务又包含一个或多个小任务),并定义target之间的依赖关系。
Ant生成文件的默认名是build.xml,生成文件可以放在项目中任何一个位置。
一个典型的项目层次结构:
1、src :存放源文件和各种配置文件
2、classes :存放编译后的class文件
3、lib :存放第三方jar包的文件夹
4、dist :存放项目打包,项目发布的文件
5、build.xml:Ant生成文件
接下来看看生成文件
Ant生成文件根元素**<project…/>**,每个项目下定义多个生成目标,每个生成目标以一个<target…/>元素定义。
project元素有多个属性:
default :指定默认的target,这个属性是必须的。
basedir :指定项目的基准路径,生成文件中的其他路径都是基于该路径的。
name :指定项目名。
description :指定项目的描述信息
例如:

<?xml version="1.0"  encoding="GBK" ?>
<!--  指定基准路径为当前路径,默认target为空-->
<project name="lalala" description="heihei" basrdir="."  target="" >
...
</project>

每个生成目标对应一个**<target…/ >**
target元素有多个属性:
name:指定target名称,该属性必须。当希望Ant运行指定的生成目标时,就是根据该name确定的,同一个生成文件中不能有同名的targer元素。
depends:该属性可指定一个或多个target名,表示运行target之前先运行depends属性所指定的一个或多个target。
if:指定一个属性名,表示仅当设置了该属性名时才执行此target。(属性是可以定义的,接着看)
unless :该属性指定一个属性名,表示仅当没有设置该属性名才执行此target。
description :该target的描述信息。

<!-- 表示运行之前必须先执行名为zzz的target-->
<target name="aaa" depends="zzz"/>
<!--只有此target设置了reyixie属性才会执行此target-->
<target name="bbb"  if="reyixie" />
<!--只有此target没有设置suibianxie属性才会执行此target-->
<target name="ccc" unless="suibianxie"/>

每个生成目标又可能由一个或多个任务序列组成,当执行某个生成目标时,实际上就是依次完成该目标所包含的全部任务。
定义任务的代码格式:
<name attribute1=“value1” attribute=“value2” … />
如:

<!--删除classes属性所代表的文件夹    $符号是获取括号里的属性的值 -->
<delete  dir="$(classes)" />

project元素还有两个重要的子元素

1、<property…/>

用于定义一个或多个属性。Ant生成文件中的属性值不可改变。
定义一个属性:

<property name="suibianxie" value="haidilao"/>

获取属性的值,则使用${属性名} ,如:

${suibianxie}

要把$当成普通字符,应该写成 $$。
property元素还有以下几个属性:
name:指定需要设置的属性名
value:指定需要设置的属性值
resource:指定属性文件的资源名称,Ant将从属性文件中读出属性名和属性值。
file:指定属性文件的文件名,Ant将从属性文件中读取属性名和属性值
url:指定属性文件的url地址,Ant将从属性文件中读出属性名和属性值
environment:用于指定系统环境变量的前缀,通过这种方式允许Ant访问系统环境变量
classpath:指定搜索属性文件的classpath
classpathref:指定搜索属性文件的classpath引用,该属性并不是直接给出classpath值,而是引用<path…/>元素定义的文件和路径集。(后面再说)

<!-- 指定读取woshi属性文件中的属性名和属性值-->
<property file="woshi"/>

属性文件由一系列的name=value组成

author=fsgrwgwrb
book=fsdfvwgwg
price=2154

让Ant生成文件访问操作系统的环境变量的值

<!--首先定义访问操作系统环境变量的前缀是env-->
<property environment="env"/>
<!--输出JAVA_HOME的环境变量-->
<echo>${env.JAVA_HOME} </echo>  

可以看到输出:[echo]C:\Java\jdk-9,这就是本电脑上JAVA_HOME环境变量的值。

2、<path…/>

使用Ant编译,运行Java时常常需要引用第三方的JAR包,这就需要使用<classpath…/>元素了。
<path…/>和用于定义一个或多个文件和路径集。
区别:
classpath元素通常作为其他任务的子元素,既可以引用已有的文件和路径集,也可以临时定义一个文件和路径集。
path作为project子元素,用于定义一个独立的、有名称的文件和路径集,用于被引用
这两个元素都可以接收如下子元素:
<dirset…/>:采用模式字符串的方式指定系列目录
如果需要指定多个路径集,使用此元素。dirset元素有个dir属性,指定该路径集的根路径。
dirset还可以使用<include…/>和<exclude…/>指定包含和不包含哪些目录
例如以下代码段

<!-- 指定该路径集的根路径是build目录-->
<dirset dir="build">
<!--指定包含apps目录下所有的classes目录-->
<include name="apps/**/classes"/>
<!--指定排除目录名中含有test的目录-->
<exclude name="apps/**/*test*"/>

? 匹配任何单字符
* 匹配0或者任意数量的字符
** 匹配0或者更多的目录

如果希望配置多个文件,采用:
<fileset…/>:采用字符串的方式指定系列文件
<filelist…/>:直接列出系列文件名的方式指定系列文件
filelist元素需要指定如下两个属性:
dir:指定文件集里多个文件所在的基准路径,必须属性
files:多个文件名列表
例如下列配置片段:

<!-- 配置src/abc.xml和src/bnm.xml文件组成的文件集-->
<filelist id="un" dir="src" files="abc.xml,bnm.xml"/>

id为该元素指定唯一标识
此外还有refid,用于指定引用另外一个元素

<filelist refid="un">
<!-- 此文件集与上面的un文件集包含的文件完全一样-->

除了使用files属性,还可以使用<file…/>子元素指定文件列表

<filelist id="un" dir="${doc}">
<file name="abc.xml"/>
<file name="bnm.xml">
</filelist>

fileset元素可以指定如下两个属性:
dir:文件集里多个文件的基准路径,必须
casesensitive:指定是否区分大小写,默认区分
也可以使用<include…/>和<exclude…/>两个子元素
**<pathelement…/>**指定一个或者多个目录
可以用下面属性中的一个:
path:指定一个或多个目录(或者jar文件)
location:指定一个目录或jar文件

Ant的任务

一个target元素包含多个task,Ant任务可以分为如下三类:
核心任务:核心任务是Ant自带的任务。
可选任务:来自第三方的任务,需要附加一个jar文件
自定义任务:自己开发的任务
常见的核心task:
javac:用于编译一个或多个java源文件,srcdir属性是源文件的位置,destdir属性是编译后class文件的位置。
java:用于运行某个java类,classname属性指定运行哪个类。
jar:生成jar包,destfile属性指定所创建jar包的文件名,通常还应指定一个文件集,将哪些文件打包。
sql:用于执行一条或多条sql语句。属性有driver,url,userid,password。
echo:输出某个字符串
exec:执行操作系统的特定命令
copy:用于复制文件或路径
delete:删除文件或路径
mkdir:创建文件夹
move:用于移动文件或路径

ant target名 :可执行对应target.

用Ant编译tomcat源码 玩转tomcat核心思想

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值