为了条理地介绍Ant,下面我分几部分来介绍Ant:
下边是build.properties的文件内容:
大家如果仔细看了build.xml,会发现build.xml只有个project,下边会有几个target。确实是这样,每个build.xml只有一个project,属性default必须的。
1.什么是Ant
Ant 是一种基于java的build工具,理论上来说,有点类似与(liunx)种的make,但是修复了make的缺陷,使build更加好用,更加方便。
这里有必要介绍一下为什么会产生Ant这个工具?
既然已经有了make,gnumake,nmake,jam和其他的构建工具,为什么还有开发另外一个呢?这时因为那些工具都具有局限性,Ant的原作者(James Duncan Davidson)在开发跨平台软件时,并不能使用其中一个完成所有的任务,这就好像,在英语不是通用语言之前,你去那里,必须搞个翻译似的,降低了开发小绿绿,也急不利于大型软件开发的维护。已有的构建工具都是基于特定平台和听顶语言的,受到操作系统的限制太大。
更重要的是,makefile有天生的痼疾,任何在liunx下调试过C程序的都碰到过可恶的Tab问题。也许一个多余的空格,就会导致一个build不能运行?你说?这方便吗?
而Ant则在所有构建工具的基于上,开发出来了跨平台,跨语言的构建工具,已成为最优秀的构建工具,几乎所有的IDE都自带了Ant工具。
2.Ant的特点
1》跨平台性,ant是基于java的,而java跨平台的性能是与庸置疑的,ant配置文件是基于XML的,而XML是格式最规范的数据格式。因而Ant跨平台的性能也不言而喻
2》功能强大
从项目的编译,打包,发布,测试到版本的控制,Ant无所不能
3》灵活方便
4》可重用性高
Ant的配置文件Build.xml以一个project为开头,以不同的target为任务模块,彼此之间相互独立,但是模块之间又可以相互联系,因而耦合性和内聚性达到了完美的统一
5》开源的
是一个优秀的开源软件
3》Ant的配置
上边简单介绍了Ant,相信没有用过的,一定很想试试,那我告诉你,如果你试过了,一定会喜欢上她的,
下面介绍一下怎么配置
和JDK配置一下,先到apache主页上下载ant最新版本,具体网址可以google/baidu。
配置大家也可以搜索,很easy的。
4》Ant如何运行呢?
和javac,java一样,直接在cmd下,输入ant就可以了,但是前提必须在该目录中有build.xml。
所以build.xml是最重要的,build.xml里详细地配置了ant如何运行和执行那些功能。
下面是我写的一个build.xml
<
project
name
="encrypt"
default
="help"
basedir
="."
>
< property file ="build.properties" />
< property name ="app.home" value ="." />
< property name ="app.name" value ="application" />
< property name ="javadoc.pkg.top" value ="encrypt" />
< property name ="src.home" value ="${app.home}/src" />
< property name ="lib.home" value ="${app.home}/lib" />
< property name ="classes.home" value ="${app.home}/classes" />
< property name ="deploy.home" value ="${app.home}/deploy" />
< property name ="doc.home" value ="${app.home}/doc" />
< property name ="web.home" value ="${app.home}/WebRoot" />
< property name ="build.home" value ="${app.home}/build" />
< property name ="build.classes" value ="${build.home}/WEB-INF/classes" />
< property name ="build.lib" value ="${build.home}/WEB-INF/lib" />
< path id ="compile.classpath" >
< fileset dir ="${lib.home}" >
< include name ="*.jar" />
< include name ="*.zip" />
fileset >
< fileset dir ="${tomcat.home}/common/lib" >
< include name ="*.jar" />
fileset >
< pathelement location ="${tomcat.home}/common/classes" />
path >
< target name ="help" >
< echo message="Please specify a target![usage:ant>]"/>
< echo message ="Here is a list of possible targets:" />
< echo message =" clean-all .....Delete all dir,all.class and war files" />
< echo message =" prepare .....Create directories if required" />
< echo message =" compile .....Compiles source file" />
< echo message =" build .....Build war file form.class and other files" />
< echo message =" deploy .....Copy war files to the webapps directory" />
< echo message =" javadoc .....Generates javadoc for this application" />
target >
< target name ="clean" >
< delete dir ="${build.home}" />
< delete dir ="${classes.home}" />
< delete dir ="${deploy.home}" />
< delete dir ="${webapps.home}/${app.home}" failonerror ="false" />
< delete dir ="${webapps.home}/S{app.name}.war" />
< delete dir ="${doc.home}" />
target >
< target name ="prepare" >
< echo message ="Tomcat Home =${tomcat.home}" />
< echo message = "webapps Home = ${webapps.home}" />
< mkdir dir ="${classes.home}" />
< mkdir dir ="${deploy.home}" />
< mkdir dir ="${doc.home}" />
< mkdir dir ="${doc.home}/api" />
< mkdir dir ="${build.home}" />
< mkdir dir ="${build.home}/WEB-INF" />
< mkdir dir ="${build.home}/WEB-INF/classes" />
< mkdir dir ="${build.home}/WEB-INF/lib" />
target >
< target name ="compile" depends ="prepare" >
< javac srcdir ="${src.home}" destdir ="${classes.home}" debug ="yes" >
< classpath refid = "compile.classpath" />
javac >
target >
< target name ="build" depends ="compile" >
< copy todir ="${build.home}" >
< fileset dir ="${web.home}" />
copy >
< copy todir ="${build.home}/WEB-INF/classes" >
< fileset dir ="${classes.home}" />
copy >
< copy todir ="${build.home}/WEB-INF/classes" >
< fileset dir ="${src.home}" >
< include name ="**/*.properties" />
< include name ="**/*.prop" />
fileset >
copy >
< copy todir ="${build.home}/WEB-INF/lib" >
< fileset dir ="${lib.home}" />
copy >
< jar jarfile ="${deploy.home}/${app.name}.war" basedir ="${build.home}" />
target >
< target name ="deploy" depends ="build" >
< copy todir ="${webapps.home}" file ="${deploy.home}/${app.name}.war" />
target >
< target name ="javadoc" depends ="compile" >
< javadoc sourcepath ="${src.home}" destdir ="${doc.home}/api"
packagenames ="${javadoc.pkg.top}.*" />
target >
project >
< property file ="build.properties" />
< property name ="app.home" value ="." />
< property name ="app.name" value ="application" />
< property name ="javadoc.pkg.top" value ="encrypt" />
< property name ="src.home" value ="${app.home}/src" />
< property name ="lib.home" value ="${app.home}/lib" />
< property name ="classes.home" value ="${app.home}/classes" />
< property name ="deploy.home" value ="${app.home}/deploy" />
< property name ="doc.home" value ="${app.home}/doc" />
< property name ="web.home" value ="${app.home}/WebRoot" />
< property name ="build.home" value ="${app.home}/build" />
< property name ="build.classes" value ="${build.home}/WEB-INF/classes" />
< property name ="build.lib" value ="${build.home}/WEB-INF/lib" />
< path id ="compile.classpath" >
< fileset dir ="${lib.home}" >
< include name ="*.jar" />
< include name ="*.zip" />
fileset >
< fileset dir ="${tomcat.home}/common/lib" >
< include name ="*.jar" />
fileset >
< pathelement location ="${tomcat.home}/common/classes" />
path >
< target name ="help" >
< echo message="Please specify a target![usage:ant
< echo message ="Here is a list of possible targets:" />
< echo message =" clean-all .....Delete all dir,all.class and war files" />
< echo message =" prepare .....Create directories if required" />
< echo message =" compile .....Compiles source file" />
< echo message =" build .....Build war file form.class and other files" />
< echo message =" deploy .....Copy war files to the webapps directory" />
< echo message =" javadoc .....Generates javadoc for this application" />
target >
< target name ="clean" >
< delete dir ="${build.home}" />
< delete dir ="${classes.home}" />
< delete dir ="${deploy.home}" />
< delete dir ="${webapps.home}/${app.home}" failonerror ="false" />
< delete dir ="${webapps.home}/S{app.name}.war" />
< delete dir ="${doc.home}" />
target >
< target name ="prepare" >
< echo message ="Tomcat Home =${tomcat.home}" />
< echo message = "webapps Home = ${webapps.home}" />
< mkdir dir ="${classes.home}" />
< mkdir dir ="${deploy.home}" />
< mkdir dir ="${doc.home}" />
< mkdir dir ="${doc.home}/api" />
< mkdir dir ="${build.home}" />
< mkdir dir ="${build.home}/WEB-INF" />
< mkdir dir ="${build.home}/WEB-INF/classes" />
< mkdir dir ="${build.home}/WEB-INF/lib" />
target >
< target name ="compile" depends ="prepare" >
< javac srcdir ="${src.home}" destdir ="${classes.home}" debug ="yes" >
< classpath refid = "compile.classpath" />
javac >
target >
< target name ="build" depends ="compile" >
< copy todir ="${build.home}" >
< fileset dir ="${web.home}" />
copy >
< copy todir ="${build.home}/WEB-INF/classes" >
< fileset dir ="${classes.home}" />
copy >
< copy todir ="${build.home}/WEB-INF/classes" >
< fileset dir ="${src.home}" >
< include name ="**/*.properties" />
< include name ="**/*.prop" />
fileset >
copy >
< copy todir ="${build.home}/WEB-INF/lib" >
< fileset dir ="${lib.home}" />
copy >
< jar jarfile ="${deploy.home}/${app.name}.war" basedir ="${build.home}" />
target >
< target name ="deploy" depends ="build" >
< copy todir ="${webapps.home}" file ="${deploy.home}/${app.name}.war" />
target >
< target name ="javadoc" depends ="compile" >
< javadoc sourcepath ="${src.home}" destdir ="${doc.home}/api"
packagenames ="${javadoc.pkg.top}.*" />
target >
project >
tomcat.home=F:\\Java\\Tomcat 5.5
webapps.home=F:\\Java\\Tomcat 5.5\\webapps
webapps.home=F:\\Java\\Tomcat 5.5\\webapps
而每个target执行不同的功能,具体的语法,大家可以看apace ant的介绍。过后我在写。今天就写到这里。只是一点小小的认识,抛砖引玉而已!
O(∩_∩)O