来自:http://blog.csdn.net/hbcui1984/article/details/1954537java
今天在公司用ant写了个部署web应用的脚本,闲来无事,就稍微总结一下,以供之后参照使用,也但愿做为一个demo, 能对你们有启迪的做用,若是真的如此,我也就非常欣慰了。web
好了,言归正传,下面就开始记流水帐吧。tomcat
一.Ant简介app
Ant是一种基于java的build工具,有些相似于unix系统中的make命令,Ant是Apache软件基金会Jakarta目录中的一个子项目,具备跨平台性,操做简单。。等特色。less
这里就不说这些老套的话了,你们知道就是一种build工具就能够了,具体有什么用和怎么用,咱们稍后说明。eclipse
二.Ant的主要标签及数据类型webapp
Ant构建文件是一个xml文件,通常默认命名为build.xml,若是是web project,一般把构建文件放在顶层目录下,即和src文件夹并列。工具
一个Ant构建文件须要定义一个惟一的项目元素(project元素),还能够定义多个目标元素(target元素),各个目标元素之间能够有必定的依赖关系,如:优化
< target name ="compile" >
< target name ="deploy" depends ="compile" >
如上,deploy依赖与compile,即:系统必须先compile完了,而后才能deploy。ui
下面简要介绍一下Ant的主要标签:
1.<project>标签
每一个构建文件对应一个项目。<project>标签是构建文件的根标签。它能够有多个内在属性,其各个属性的含义分别以下:
(1) default表示默认的运行目标,这个属性是必须的。
(2) basedir表示项目的基准目录。
(3) name表示项目名。
(4) description表示项目的描述。2.<target>标签
Target的经常使用属性以下。
(1).name表示目标名称,这个属性是必须的。
(2).depends表示依赖的目标。
(3)if表示仅当属性设置时才执行。
(4)unless表示当属性没有设置时才执行。
(5)description表示项目的描述。
Ant的depends属性指定了target的执行顺序。Ant会依照depends属性中target出现顺序依次执行每一个target。在执行以前,首先须要执行它所依赖的target。3.<mkdir>标签
该标签用于建立一个目录,它有一个属性dir用来指定所建立的目录名。4<jar>标签
该标签用来生成一个JAR文件,其属性以下。
(1) destfile表示要生成的JAR文件名。
(2) basedir表示被归档的文件名。
(3) includes表示须要归档的文件模式。
(4) exchudes表示被排除的文件模式。5.<javac标签>
该标签用于编译一个或一组java文件,其属性以下。
(1).srcdir表示源程序的目录。
(2).destdir表示class文件的输出目录。
(3).include表示被编译的文件的模式。
(4).excludes表示被排除的文件的模式。
(5).classpath表示所使用的类路径。
(6).debug表示包含的调试信息。
(7).optimize表示是否使用优化。
(8).verbose 表示提供详细的输出信息。
(9).fileonerror表示当碰到错误就自动中止。6.<java>标签
该标签用来执行编译生成的.class文件,其属性以下。
(1).classname 表示将执行的类名。
(2).jar表示包含该类的JAR文件名。
(3).classpath所表示用到的类路径。
(4).fork表示在一个新的虚拟机中运行该类。
(5).failonerror表示当出现错误时自动中止。
(6).output 表示输出文件。
(7).append表示追加或者覆盖默认文件。7.<delete>标签
该标签用于删除一个文件或一组文件,其属性以下。
(1)/file表示要删除的文件。
(2).dir表示要删除的目录。
(3).includeEmptyDirs 表示指定是否要删除空目录,默认值是删除。
(4).failonerror 表示指定当碰到错误是否中止,默认值是自动中止。8.<copy>标签
该标签用于文件或文件集的拷贝,其属性以下。
(1).file 表示源文件。
(2).tofile 表示目标文件。
(3).todir 表示目标目录。
(4).overwrite 表示指定是否覆盖目标文件,默认值是不覆盖。
(5).includeEmptyDirs 表示制定是否拷贝空目录,默认值为拷贝。
(6).failonerror 表示指定如目标没有发现是否自动中止,默认值是中止。
若是咱们部署一个 web应用的话,常常用到的标签有:delete,mkdir,copy,jar,target,project。
三.使用Ant发布web应用到tomcat
下面咱们以一个简单的例子,来演示如何使用Ant发布web应用到tomcat。咱们假设有个很简单的web projcet,咱们想使用Ant来将服务部署到tomcat,假设在web project的根目录下有个build.xml文件,咱们能够如此编辑该构建文件。
< project name ="demo" basedir ="." >
<!-- 定义tomcat所在目录 -->
< property name ="webapp" value ="D:/tomcat/webapps/ROOT" />
< target name ="core" >
<!-- 删除原来部署的文件 -->
< delete dir ="${webapp}" ></ delete >
< mkdir dir ="${webapp}" />
<!-- 将编译后的文件拷贝到tomcat目录下 -->
< copy todir ="${webapp}" overwrite ="true" >
< fileset dir ="${basedir}/WebRoot" />
</ copy >
</ target >
</ project >
完事了?yes!很是简单!固然,如上代码的前提是:在eclipse+Myeclipse环境下开发,而且将自动编译开关开开,这样咱们只须要将编译好的文件拷贝到tomcat目录下便可,若是不是在这种环境下开发,咱们可能就须要先使用javac命令编译一下,而后再拷贝到tomcat目录下。
若是咱们想把该web project中的java文件打成jar包,放置在WEB-INF/lib目录下,将其余文件拷贝到tomcat/webapps目录下,咱们可使用以下构建文件:
< project name ="demo" basedir ="." >
< property name ="webapp" value ="D:/tomcat/webapps/ROOT" />
< target name ="core" >
<!-- 删除原来部署的文件 -->
< delete dir ="${webapp}" ></ delete >
< mkdir dir ="${webapp}" />
<!-- 除了class文件外,其余文件拷贝到tomcat目录下 -->
< copy todir ="${webapp}" overwrite ="true" >
< fileset dir ="${basedir}/WebRoot" excludes ="**/*.class" />
</ copy >
<!-- 将class文件打包,放到/WEB-INF/lib目录下 -->
< jar destfile ="${webapp}/WEB-INF/lib/test.jar" >
< fileset dir ="${basedir}/WebRoot/WEB-INF/classes" >
< include name ="**/*.class" />
</ fileset >
</ jar >
</ target >
</ project >
怎么样?咱们上面用到了copy,delete,mkdir,fileset,include,excludes这些标签,你可明白?