`
jyangzi5
  • 浏览: 212282 次
  • 性别: 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使用示例。 首先,`api`指令在ANT中并不常见,可能是指使用ANT来处理或调用特定API的过程。然而,通常在`build.xml`文件中,我们看到的是如`...

    ant打包ant的build.xml的详解

    Ant 打包 ant 的 build.xml 详解 Ant 是一个流行的自动化构建工具,广泛应用于软件开发和项目自动化构建中。本文将详细介绍 Ant 的环境变量配置和 build.xml 文件的配置详解。 第一步:安装 Apache Ant 在开始...

    ant打包工具

    **Ant打包工具详解** Ant是Apache软件基金会Jakarta项目下的一个构建工具,它以其灵活性和可扩展性在Java开发领域中被广泛应用。Ant基于XML,它的主要任务是编译源代码、创建JAR文件、执行测试、部署应用程序等。...

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

    在这个SVN+ant服务器代码打包编译流程中,我们将深入探讨这两个工具的集成使用,以及如何通过build.xml和build.properties文件实现自动化编译。 首先,让我们了解SVN的安装和配置。在Windows上,你可以下载...

    使用Ant编译打包

    **Ant编译打包详解** Ant 是 Apache 软件基金会的一个开源项目,它是一个基于Java的构建工具,类似于Make,但更为现代且专为Java设计。Ant使用XML来描述构建过程,包括编译、测试、打包和部署等任务,使得开发者...

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

    在本项目中,Ant被用来执行自动化任务,包括从Subversion(SVN)版本控制系统中获取源代码,并对代码进行打包。 Subversion是一个开源的版本控制系统,用于管理软件项目的源代码。它允许开发人员在多个时间点保存...

    [北京圣思园Ant深入详解]_002.Ant属性、目标、依赖深度详解

    《Ant属性、目标与依赖深度详解》 Apache Ant是一个基于Java的构建工具,它通过XML配置文件来描述项目构建过程,极大地简化了Java项目的构建和部署。本篇将深入探讨Ant中的三个核心概念:属性(Properties)、目标...

    [北京圣思园Ant深入详解]_003.Ant目标深度详解、使用Ant的各种任务

    例如,`clean`目标可能用于清理项目,`compile`目标负责编译源代码,`jar`目标则用于打包编译后的结果。通过定义这些目标并设置它们之间的依赖,Ant可以按照特定顺序执行任务,确保构建过程的正确性。 接下来,我们...

    Apache-ANT完美详解

    - **任务(Tasks)**:Ant的任务是构建过程中的基本操作单元,如编译Java源代码、复制文件、打包等。Ant内建了许多任务,同时也可以自定义任务。 - **属性(Properties)**:属性用于存储值,在整个构建过程中可以...

    Apache_ANT完美详解.pdf

    构建过程在软件开发中扮演着核心角色,涉及代码的获取、编译、打包等一系列操作。Ant通过其强大的构建脚本(默认为build.xml),将这些复杂的过程自动化,简化了开发者的日常工作,提高了效率。 #### 四、Ant的环境...

    Java Ant build详解

    总结,Java Ant build是Java项目自动化构建的重要工具,通过理解`build.xml`中的各个元素,我们可以更好地控制和管理项目的构建过程,确保代码的编译、测试和打包等工作高效、准确地完成。学习和掌握Ant构建,对于...

    ANT-build详解

    《ANT-build详解》 ANT(Apache Ant)是一个Java平台上的自动化构建工具,它以其灵活性和可扩展性在软件开发过程中广泛使用。ANT的核心概念是基于XML的构建文件,这个文件定义了一系列任务(tasks),用于编译、...

    使用ANT打包J2EE程序

    ### 使用ANT打包J2EE程序 #### 概述 在Java世界中,特别是对于J2EE应用程序来说,构建过程往往需要高度自动化与可重复性。Apache Ant作为一种强大的、基于XML的构建工具,提供了灵活的方式来自动执行软件构建流程...

    高效开发ANT详解.

    《高效开发ANT详解》 Ant,全称为Apache Ant,是一款开源的Java项目构建工具,旨在提供一种跨平台、简单易用的方式来自动化构建过程,类似于Linux中的make工具。Ant以其强大的灵活性和可扩展性,克服了传统构建工具...

    Ant 脚本详解

    Ant是Apache软件基金会下的一个Java项目,它是一个构建工具,主要用于自动化Java应用程序的构建过程,如编译、打包、测试和部署等。Ant基于XML,它的配置文件(通常命名为build.xml)描述了构建过程的各个步骤,使得...

    Ant 配置文件详解

    每个目标可以包含多个任务,任务则是实际执行的操作,如编译源代码、打包JAR文件等。基本结构如下: ```xml 项目名" default="默认目标" basedir="."&gt; 属性名" value="属性值"/&gt; 目标名"&gt; &lt;任务类型 name="任务...

Global site tag (gtag.js) - Google Analytics