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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值