Ant打包详解

大家都知道,“jar  -cvf  test.war *”这样的命令是可以为web项目打war包的,但是前段时间有这样一个问题,用命令打的包文件没什么问题,但放在tomcat中解压后,就会丢失一些文件,以为是项目文件的问题,但将原项目copy给同事,执行相同的命令,打完war包放在我的tomcat中又能正常运行,在was中也不能正常部署,就是说搞得很郁闷嘛,这难道是传说中的RP。恩,干脆整别的方法,把,在网上搜了一下,这回就遇见的Ant大师,学习了一下,将项目整了war包,放在tomcat中测试正确,在was中运行无误。现将整理的一些资料用板砖拍出来,当然了,网络是自由的,内核是别人的,外壳是小武的,旨在学习。。。

 

----------------build.xml-------------------

 

       <?xml version="1.0"?>  

        <!--(1) default表示默认的运行目标,这个属性是必须的。
              (2) basedir表示项目的基准目录。
              (3) name表示项目名。
              (4) description表示项目的描述。
  每个构建文件都对应于一个项目,但是大型项目经常包含大量的子项目,每一个子项目都可以有自己的构建文件。
        -->

  1. <project name="TestProject" default="all" basedir="."  description="test_project">  
  2.   
  3.     <property name="src.dir"       value="src" />  
  4.     <property name="classes.dir"   value="WEB-INF/classes" />  
  5.     <property name="lib.dir"       value="WEB-INF/lib" />  
  6.   

    <!--用于输出打包的文件夹-->  

  1.     <property name="temp.dir"      value="${java.io.tmpdir}/${ant.project.name}" />  
  2.     <property name="target.dir"    value="target" />  
  3.   
  4.     <!-- 定义classpath -->  
  5.     <path id="master-classpath">  
  6.         <fileset file="${lib.dir}/*.jar" />  
  7.         <pathelement path="${classes.dir}" />  
  8.     </path>  
  9.   

<!-- 

  1. 一个项目标签下可以有一个或多个target标签。一个target标签可以依赖其他的target标签。例如,有一个target用于编译程序,另一个target用于声称可执行文件。在生成可执行文件之前必须先编译该文件,因策可执行文件的target依赖于编译程序的target。
  2. Target的所有属性如下。
    (1) name表示标明,这个属性是必须的。
    (2) depends表示依赖的目标。
    (3) if表示仅当属性设置时才执行。
    (4) unless表示当属性没有设置时才执行。
    (5) description表示项目的描述
  3. Ant的depends属性指定了target的执行顺序。Ant会依照depends属性中target出现顺序依次执行每个target。在执行之前,首先需要执行它所依赖的target。程序中的名为run的target的depends属性compile,而名为compile的target的depends属性是prepare,所以这几个target执行的顺序是prepare->compile->run。一个target只能被执行一次,即使有多个target依赖于它。如果没有if或unless属性,target总会被执行。

-->

  1.     <target name="clean">  
  2.         <delete dir="${classes.dir}" />  
  3.         <delete dir="${temp.dir}" />  
  4.         <delete file="${target.dir}/${ant.project.name}.jar"/>  
  5.         <delete file="${target.dir}/${ant.project.name}.war"/>  
  6.         <delete dir="${target.dir}" />  
  7.     </target>  
  8.   

   <!-- 初始化任务 

(<mkdir )该标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名,其代码如下:<mkdir dir=”${class.root}”/>通过以上代码就创建了一个目录,这个目录已经被前面的property标签所指定。

-->  

  1.     <target name="init" depends="clean">  
  2.         <mkdir dir="${target.dir}" />  
  3.         <mkdir dir="${temp.dir}" />  
  4.         <mkdir dir="${classes.dir}" />  
  5.     </target>  
  6.   

   <!-- 编译 -->  

  1.     <target name="compile" depends="init" description="compile the source files">  
  2.         <javac srcdir="${src.dir}" destdir="${classes.dir}"  debug="true" encoding="GB2312">  
  3.             <classpath refid="master-classpath" />  
  4.         </javac>  
  5.         <copy todir="${classes.dir}" overwrite="true">  
  6.             <fileset dir="${src.dir}">  
  7.                 <include name="**/*.xml" />  
  8.                 <include name="**/*.properties" />  
  9.             </fileset>  
  10.         </copy>  
  11.     </target>  
  12.   

 <!--打jar包-->  

  1.     <target name="jar" depends="compile">  
  2.         <jar jarfile="${target.dir}/${ant.project.name}.jar">  
  3.             <fileset dir="${classes.dir}">  
  4.                 <include name="**/*" />  
  5.             </fileset>  
  6.         </jar>  
  7.     </target>  
  8.   
  9.     <target name="preWar" depends="jar">  
  10.         <copy todir="${temp.dir}/WEB-INF/lib" overwrite="true">  
  11.             <fileset dir="${target.dir}">  
  12.                 <include name="${ant.project.name}.jar"/>  
  13.             </fileset>  
  14.         </copy>  
  15.         <copy todir="${temp.dir}" overwrite="true">  
  16.             <fileset dir="${basedir}">  
  17.                 <include name="${lib.dir}/*.jar" />  
  18.                 <include name="index.html" />  
  19.                 <include name="page/**/*.*" />  
  20.                 <include name="WEB-INF/*.xml" />  
  21.             </fileset>  
  22.         </copy>  
  23.     </target>  
  24.        

  <!--打war包-->  

  1.     <target name="war" depends="preWar">  
  2.         <jar jarfile="${target.dir}/${ant.project.name}.war">  
  3.             <fileset dir="${temp.dir}">  
  4.                 <include name="**/*.*"/>  
  5.             </fileset>  
  6.         </jar>       
  7.     </target>  
  8.   
  9.     <target name="all" depends="war">  
  10.         <delete dir="${temp.dir}"/>  
  11.     </target>  
  12.   
  13. </project>  

 

下次再整,后续。。。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值