ant工具管理web项目

1、ant安装
从官网下载 二进制文件>>解压到 某目录>>设置系统变量ANT_HOME>>设置PATH环境变量bin>>DOS中测试ant命令
2、ant build.xml文件
<?xml version="1.0"  encoding="GB2312" ?>  
<project name=" projectname" default="war" basedir=".">  
<!--  
  ===================================================================  
  定义属性(property tasks)  
  最好把用到的路径呀,名称呀都在这里定义成全局变量  
    ===================================================================  
-->  
<!--主要的 系统环境属性-->  
<property environment=" env" /><!--取window,unix...的环境变量-->  
<property name=" java.home" value="${env.JAVA_HOME}" />  
<!--主要的 app环境属性-->  
<property name="app.name" value=" yourappname" />  
<property name="app.jar" value="${app.name}.jar" />  
<property name="app.war" value="${app.name}.war" />  
<property name="app.copyright"  
  value=" Copyright (c) 2010 GLOBAL-SAFETY Software Foundation.  All rights reserved." />  
<!--app中 src的属性-->  
<property name="src.dir" value="src" />  
<property name="classSavePath" value="web/WEB-INF/classes" />  
<!--app用到的 lib-->  
<property name="lib.dir" value="web/WEB-INF/lib" />  
<!--app的 build目录中-->  
<property name="build.dir" value=" ./output" />  
<property name="build.classes" value="${build.dir}/classes" />  
<property name="build.lib" value="web/WEB-INF/lib" />  
<property name="war.dir" value="${build.dir}/war" />  
<property name="warsource.dir" value="web" />  
<!--  
  定义一组路径以后可以通过id重用这组路径
-->  
<path  id="classpath">  
   <fileset dir="${lib.dir}">  
   <include name="**/*.jar" />  
   <include name="*.zip" />  
  </fileset>  
    <fileset  dir="${java.home}/lib">  
   <include name="**/*.jar" />  
   <include name="*.zip" />  
  </fileset>  
</path>  
<!--  
  ===================================================================  
  init 准备目录(File Tasks)  
  主要的目录结构通常是不会变的,一起生成他们  
  ===================================================================  
-->  
<target name="init">  
  <echo message="环境信息:" />  
  <echo message="JAVA_HOME:${java.home}" />  
   
  <!-- 清除以前目录-->  
  <delete dir="${build.dir}" failonerror="false" />  
  <delete dir="${classSavePath}" failonerror="false" />  
  <!-- 准备目录-->  
  <mkdir dir="${build.dir}" />  
  <mkdir dir="${classSavePath}" />  
</target>  
<!--  
  ===================================================================  
  Build the code (Compile Tasks,File Tasks)  
  ===================================================================  
-->  
<target name="build" depends="init">  
  <!--编译-->  
    <javac srcdir="${src.dir}" destdir="${classSavePath}"  
   encoding="UTF-8" fork="true" memoryMaximumSize="1024m">  
   <classpath refid="classpath" />  
  </javac>  
    <copy todir="${classSavePath}" includeemptydirs="false">  
   < fileset  dir="${src.dir}">  
    <include name="**/ *.properties" />  
    <include name="* */*.xml"  />  
    <include name="**/ *.xsl" />  
   </fileset>  
  </copy>  
</target>  
<!--  
  ===================================================================  
  打war包  
  ===================================================================  
-->  
<target name="war" depends="build" description="生成war包">  
  <echo message="正在打war包,请稍候..." />  
  <war destfile="${build.dir}/${app.war}" encoding="gb2312"  
   webxml="${warsource.dir}/WEB-INF/web.xml">  
   <fileset dir="${warsource.dir}">  
    <exclude name="build.xml" />  
    <exclude name="**/web.xml" />  
   </fileset>  
  </war>  
  <echo message="打war包结束" />  
</target>  

<!--  
  ===================================================================  
  快速(依靠原工程编译文件)打war包  
  ===================================================================  
-->  
<target name="quick-war" depends="" description="生成war包">  
  <echo message="非重新build打war包(请保证您的工程$/web/WEB-INF/classes已有下编译类),请稍候..." />  
  <war destfile="${build.dir}/${app.war}" encoding="gb2312"  
   webxml="${warsource.dir}/WEB-INF/web.xml">  
   <fileset dir="${warsource.dir}">  
    <exclude name="build.xml" />  
    <exclude name="**/web.xml" />  
   </fileset>  
  </war>  
  <echo message="打war包结束" />  
</target>  

</project>   

3、 ant优点
  • 功能强大。从编译java文件到checkin cvs,反正几乎你想得到的功能它都能作。 
  • 扩展容易,如果你发现某个功能ant没有,自己实现一个Task类就是。 
  • 一些功能设计得很合理。比如javac和java自动检查时间戳和依赖关系检查等等。 
4、 ant缺点
  • 而xml的语法有些时候显得很繁琐,xml用来描述逻辑异常笨拙。 
  • 所有的逻辑都只能在java里用Task实现。要做一些跨越不同Task之间的通讯很困难。比如:先读取第一个文件的时间戳,再读取另一个文件中储存的时间戳,再根据两个时间戳之间的距离判断下一步调用哪个task或者target。 
  • xml的代码重用困难。很难定义一些常用的xml element作为库,然后再不同文件甚至项目中重用。 
  • 对module的支持有限。 
5、基于脚本语言的 build tools
  • maven:
  • 用ruby写的buildr、raven
    buildr支持
    1、可以读取Maven的pom.xml构建文件,创建Buildr的构建文件 
    2、支持ANTLR解析器 
    3、支持Hibernate XDoclet和Schema任务 
    4、支持JUnit/TestNG测试框架 
    5、支持所有Ant的任务,只要你会用ant,你就会用buildr

你可能感兴趣的:(Web,ant,Build,工具,include,encoding)