`
jyangzi5
  • 浏览: 207748 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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>  

 

下次再整,后续。。。

分享到:
评论

相关推荐

    ANT打包命令详解api指令

    ANT打包命令详解api指令 ant java 命令 构建工具 api

    ant打包ant的build.xml的详解

    详细介绍了ant的环境变量的配置及build.xml文件的配置详解

    SVN+ant 服务器代码打包编译流程详解,内含详细安装以及操作说明

    SVN+ant 服务器代码打包编译流程详解,内含详细安装以及操作说明build.xml+build.properties详解,可以直接修改路径后打包编译SVN代码。

    ant打包的代码,包括从svn上获取代码

    ant打包工程的配置文件,包括从svn上自动下载代码,自动打包等

    java ant详解

    运用ant进行java代码打包、拷贝,编译等工作,方便快捷!效率

    ant-build_xm文件说明,对用ant构建进行了详细的说明!

    本资源是属于理论性的,主要是针对ant构建打包时 xml文档中各关键字的设定做了详细的说明,为更加灵活的设置ant构建提供了参考。但不足之处在于没有提供相应的实例。

    Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解

    本篇文章介绍了,Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解。需要的朋友参考下

    gradle使用详解视频

    1.gradle基本介绍 2.gradle构建一个java项目 3.gradle构建一个Android项目与编译打包. 4.gradle的多渠道打包 5.gradle依赖管理 ......................

    Maven权威指南 很精典的学习教程,比ANT更好用

    坐标详解 9.5.2. 多模块项目 9.5.3. 项目继承 9.6. POM最佳实践 9.6.1. 依赖归类 9.6.2. 多模块 vs. 继承 9.6.2.1. 简单项目 9.6.2.2. 多模块企业级项目 9.6.2.3. 原型父项目 10. 构建生命周期 10.1...

    Android笔记之:App应用之发布各广告平台版本的详解

    1. 基础本文其实是针对《Android笔记之:App模块化及工程扩展的应用》和《Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解》的一个扩展和应用场景。所以当然也需要这两篇文章的基础:(1). Andr

    iuhyiuhkjh908u0980

    ant配置文件实例详解 build.xml 代码 xml version="1.0" encoding="UTF-8"?&gt; &lt;!-- name:对应工程的名字;default:需要的缺省任务(运行"ant"不指明任务时执行的任务) --&gt; by duzn 2007-04-02 回复 (0) Antenna与j2me...

    详解使用React进行组件库开发

    由于篇幅原因,在这里只对开发过程中比较纠结的选型和打包等进行讨论,后续再对具体组件的封装进行讨论。 概述 我们都知道,组件化的开发模式对于我们的开发效率有着极大的提升,针对我们日常使用的基本组件进行...

    java文集

    DFS文件读写 网络爬虫之Spider Java正则表达式的总结关键词: Java正则表达式 批量上传--采集 (多个文件夹) The Agile Way hibernate mapping文件中的标记详解:关系标记 ANT 安装使用及...

    Android中的build.gradle文件深入讲解

    gradle是一个项目构建工具,java开发中有两个大名鼎鼎的项目构建Maven,Ant,其中maven简单易控深受开发者喜爱。 项目构建工具是什么?能干吗? 开发某些项目时,需要很多jar或者库的支持,还没开始开发就下载了n...

    maven window下安装包

    第1章:Maven概述/1.3 与其它构建相比/1.3.2 Ant 第2章:Maven的安装/2.1 Window下的安装 第2章:Maven的安装/2.2 Linux下的安装 第3章:Maven使用入门/3.1 编写POM 第3章:Maven使用入门/3.2 编写源代码 第3章:...

    xmljava系统源码-GradleDemo:Gradle插件开发极简教程

    xml java系统源码 #Gradle入门教程 #一、简介 Gradle是一种构建工具,...一个Task表示一个逻辑上较为独立的执行过程,比如编译Java源代码,拷贝文件,打包Jar文件,甚至可以是执行一个系统命令或者调用Ant。另外,一个

    autoJS1688示例.zip

    getPixels参数详解.js gitee-webhook.js git常用命令.js gpsui.js gps时间获取.js HAHA小视频无限撸money(无解说).js hello语音刷房脚本(雷电).js hl4a.js HTTP请求.js http超时返回null.js ID3...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.3.3. bean属性及构造器参数详解 3.3.3.1. 直接量(基本类型、Strings类型等。) 3.3.3.2. 引用其它的bean(协作者) 3.3.3.3. 内部bean 3.3.3.4. 集合 3.3.3.5. Nulls 3.3.3.6. XML-based configuration metadata ...

Global site tag (gtag.js) - Google Analytics