Ant介绍

Ant 是一种基于Java的构建工具。从理论上来说,它有些类似于(UNIX)C中的make,但是没有make的缺陷。

Ant使用Java的类来扩展。Ant的配置文件是基于XML的,用户不必再编写shell命令,通过调用目标(target)树,就可以执行各种任务(task)。每个任务由一个实现了特定Task接口的对象来运行。

总的来说,Ant是一种跨平台的构建工具,此外,Ant的配置文件时XML格式的,比make脚本更容易编写和维护,也更通用。

编写Ant的构建文件

Ant的构建文件采用XML格式,每个构建文件都包含一个<project>元素和至少一个<target>元素。<target>元素包含任务(task)元素。构建文件的每一个任务元素都可以由一个id属性,其值必须是唯一的,通过这个id可以引用任务。

Ant的构建文件通常都命名为build.xml,Ant根据构建文件中指定的任务,完成整个项目的编译、打包、发布等工作。

“*.*”和“**”的区别,前者表示目录下的所有文件,后者表示目录下的所有文件、子目录,以及子目录下的所有文件。

<project name="bookstore" default="build" basedir=".">

工程名是bookstore,工程默认的目标是:build,基目录时build.xml文件所在的路径

通过使用<target>元素的if或者unless属性,可以让目标在满足某个条件时执行。

例如:<target name="build" depends="compile" if="build" description="在build目录下建立war">

那么执行Ant时,build目标将不会被执行,如果要执行build目标,需要设置build特性(property),它的值是什么并不重要。输入下面的命令,build目标将被执行:

ant -Dbuild=abc;

if和unless属性只能让使用了这两个属性的目标执行或者不执行,而不能控制该目标所依赖的目标是否执行。

任务的介绍

一个任务是一段可执行的代码,一个任务可以有多个属性

如:<name attribute1="value1" attribute2="value2" .../>

1、property任务

一个工程可以由一组特性,这些特性可以在构建文件中通过<property>任务来设定,或者的Ant外部设定。一个特性有一个名字和一个值,名字是区分大小写的。特性可以在任务的属性值中使用,形式为“${特姓名}”

如:<property name="build.dir" value="${basedir}/build"/>

<mkdir dir="${build.dir}"/>在调用mkdir任务时,创建build目录,${build.dir}被解析为build(而${basedir}被解析为 . ).

特性文件也可以单独放到一个文件里如:build.properties,并和build.xml在同一个目录下,那么在build.xml里只要加一句<property file="build.properties".>即可

如果是用resource属性指定的话,就要在classpath路径上找resource指定的那个文件名

2、mkdir任务

用于创建一个目录,它只有一个属性-dir,这是要创建的目录

3、copy任务

用于拷贝一个文件或一组文件,主要是将Web应用程序中的文件和Java源文件代码拷贝到build目录下,在里面可以嵌套一个fileset元素,fileset又可以嵌套include和exclude元素,用于指定要包含或排除的文件样式。

例如:

<copy todir="${build.dir}">

           <fileset dir="${basedir}">

                     <include name="*.jsp"/>

                     <include name="image/*.*"/>

                     <include name="WEB-INF/*.*"/>

                     <exclude name="build.xml"/>

            </fileset>

</copy>

4、delete

用于删除一个文件或一个目录,或者删除使用嵌套的<fileset>元素指定的一组文件。

如:<delete dir="${build.dir}"/>

5、javac

用于编译Java源文件。在编译源文件时,源目录和目标目录将被递归的扫描。只有在Java源文件没有对应的class文件,或者class文件比Java源文件旧时,才会发生编译。

例如:

<javac srcdir="${src}"

             destdir="${build}"

              includes="mypackage/p1/**,mypackage/p2/**"

              excludes="mypackage/p1/testpackage/**"

               classpath="xyz.jar"/>

编译${src}目录下的.java文件,不过只有在mypackage/p1和mypackage/p2下的文件将被编译,而在mypackage/p1/testpackage目录下的所有文件将不会被编译。编译后的.class文件将被保存到${build}目录下。

6、java

用于在当前的虚拟机(运行Ant的虚拟机)或者派生的另一个虚拟机中执行一个Java类

7、tstamp

在利用Ant编译打包工程时,有时候需要创建具有当前构件日期和时间的文件名,或者通过替换文件中的时间记号,来生成发行时间。这就需要<tstamp>任务来完成。

8、filter

可以通过替换文件中的时间记号,来生成发行时间,这种过滤功能由filter来设置

9、jar

用于创建Java归档文件

10、war

是jar任务的扩展,用于建立Web应用程序归档文件。

关于war文件

其实war文件就是Java中web应用程序的打包。借用一个老兄的话,“当你一个web应用程序很多的时候,如果你想把它部署到别的机器上,来回拷这些文件是件挺郁闷的事情,如果要是一个文件就好了。。。那么war文件就可以满足你这个小小的要求”。

那有人会说,这和直接打成rar文件不一样吗?区别大了!

如果你直接打成rar文件,你得手动的去解压缩,但是war文件不需要,你把它放到tomcat的webapp目录下,就可以直接运行了,我觉得这个功能够强大,哈哈。在tomcat安装目录下的conf目录下有个server.xml,搜索“unpackWARs”关键字,你会看到在<Host>标签中会有对其的设置,如果设置成true,那么tomcat在启动的时候,会在webapps目录下自动解压你那个war文件;如果设置成false,则tomcat直接访问war文件。

假如他的值是true,你的tomcat已经启动了,你把自动解压的文件夹删了,tomcat又会自动解压,我觉得它是实时的在检查,一旦没有,就会解压。

如何生成war文件呢:

1
jar -cvf blog.war *

查看war文件的方式:

1
jar -tf blog.war

11、echo

用于向监控台回送消息,这个任务也可以将消息回送到文件中。

部署到Tomcat

Tomcat对利用Ant实现自定义的部署提供了支持,部署任务包括部署、重新加载和卸载。

运行Ant

Ant的运行很简单,在正确安装Ant后,只要在命令行下输入Ant就可以了,Ant会在当前目录下查找build.xml文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值