• 使用Ant发布web应用到tomcat


    使用Ant发布web应用到tomcat

             今天在公司用ant写了个部署web应用的脚本,闲来无事,就稍微总结一下,以供以后参照使用,也希望作为一个demo, 能对大家有启迪的作用,如果真的如此,我也就很是欣慰了。

             好了,言归正传,下面就开始记流水账吧。

    一.Ant简介

            Ant是一种基于java的build工具,有些类似于unix系统中的make命令,Ant是Apache软件基金会Jakarta目录中的一个子项目,具有跨平台性,操作简单。。等特点。

             这里就不说这些老套的话了,大家知道就是一种build工具就可以了,具体有什么用和怎么用,我们稍后说明。

    二.Ant的主要标签及数据类型

            Ant构建文件是一个xml文件,一般默认命名为build.xml,如果是web project,通常把构建文件放在顶层目录下,即和src文件夹并列。

             一个Ant构建文件需要定义一个唯一的项目元素(project元素),还可以定义多个目标元素(target元素),各个目标元素之间可以有一定的依赖关系,如:

    <target name="compile">
    <target name="deploy" depends="compile">

    如上,deploy依赖与compile,即:系统必须先compile完了,然后才能deploy。

    下面简要介绍一下Ant的主要标签:

    1.<project>标签
     每个构建文件对应一个项目。<project>标签是构建文件的根标签。它可以有多个内在属性,其各个属性的含义分别如下:
    (1) default表示默认的运行目标,这个属性是必须的。
    (2) basedir表示项目的基准目录。
    (3) name表示项目名。
    (4) description表示项目的描述。

    2.<target>标签
    Target的常用属性如下。
    (1).name表示目标名称,这个属性是必须的。
    (2).depends表示依赖的目标。
    (3)if表示仅当属性设置时才执行。
    (4)unless表示当属性没有设置时才执行。
    (5)description表示项目的描述。
    Ant的depends属性指定了target的执行顺序。Ant会依照depends属性中target出现顺序依次执行每个target。在执行之前,首先需要执行它所依赖的target。

    3.<mkdir>标签
    该标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名。

    4<jar>标签
    该标签用来生成一个JAR文件,其属性如下。
    (1) destfile表示要生成的JAR文件名。
    (2) basedir表示被归档的文件名。
    (3) includes表示需要归档的文件模式。
    (4) exchudes表示被排除的文件模式。

    5.<javac标签>
    该标签用于编译一个或一组java文件,其属性如下。
    (1).srcdir表示源程序的目录。
    (2).destdir表示class文件的输出目录。
    (3).include表示被编译的文件的模式。
    (4).excludes表示被排除的文件的模式。
    (5).classpath表示所使用的类路径。
    (6).debug表示包含的调试信息。
    (7).optimize表示是否使用优化。
    (8).verbose 表示提供详细的输出信息。
    (9).fileonerror表示当碰到错误就自动停止。

    6.<java>标签
    该标签用来执行编译生成的.class文件,其属性如下。
    (1).classname 表示将执行的类名。
    (2).jar表示包含该类的JAR文件名。
    (3).classpath所表示用到的类路径。
    (4).fork表示在一个新的虚拟机中运行该类。
    (5).failonerror表示当出现错误时自动停止。
    (6).output 表示输出文件。
    (7).append表示追加或者覆盖默认文件。

    7.<delete>标签
    该标签用于删除一个文件或一组文件,其属性如下。
    (1)/file表示要删除的文件。
    (2).dir表示要删除的目录。
    (3).includeEmptyDirs 表示指定是否要删除空目录,默认值是删除。
    (4).failonerror 表示指定当碰到错误是否停止,默认值是自动停止。

    8.<copy>标签
    该标签用于文件或文件集的拷贝,其属性如下。
    (1).file 表示源文件。
    (2).tofile 表示目标文件。
    (3).todir 表示目标目录。
    (4).overwrite 表示指定是否覆盖目标文件,默认值是不覆盖。
    (5).includeEmptyDirs 表示制定是否拷贝空目录,默认值为拷贝。
    (6).failonerror 表示指定如目标没有发现是否自动停止,默认值是停止。

    如果我们部署一个 web应用的话,经常用到的标签有:delete,mkdir,copy,jar,target,project。

    三.使用Ant发布web应用到tomcat

    下面我们以一个简单的例子,来演示如何使用Ant发布web应用到tomcat。我们假设有个很简单的web projcet,我们想使用Ant来将服务部署到tomcat,假设在web project的根目录下有个build.xml文件,我们可以如此编辑该构建文件。

    <project name="demo" basedir=".">
                          
    <!--定义tomcat所在目录-->
        
    <property name="webapp" value="D:/tomcat/webapps/ROOT" />
        
    <target name="core">
            
    <!--删除原来部署的文件-->
            
    <delete dir="${webapp}"></delete>
            
    <mkdir dir="${webapp}" />
                                               
    <!--将编译后的文件拷贝到tomcat目录下-->
            
    <copy todir="${webapp}" overwrite="true">
                
    <fileset dir="${basedir}/WebRoot"/>
            
    </copy>
        
    </target>
    </project>

             完事了?yes!非常简单!当然,如上代码的前提是:在eclipse+Myeclipse环境下开发,并且将自动编译开关开开,这样我们只需要将编译好的文件拷贝到tomcat目录下即可,如果不是在这种环境下开发,我们可能就需要先使用javac命令编译一下,然后再拷贝到tomcat目录下。

              如果我们想把该web project中的java文件打成jar包,放置在WEB-INF/lib目录下,将其他文件拷贝到tomcat/webapps目录下,我们可以使用如下构建文件:

    <project name="demo" basedir=".">
        
    <property name="webapp" value="D:/tomcat/webapps/ROOT" />
        
    <target name="core">
            
    <!--删除原来部署的文件-->
            
    <delete dir="${webapp}"></delete>
            
    <mkdir dir="${webapp}" />
    <!--除了class文件外,其他文件拷贝到tomcat目录下-->
            
    <copy todir="${webapp}" overwrite="true">
                
    <fileset dir="${basedir}/WebRoot" excludes="**/*.class"/>
            
    </copy>
    <!--将class文件打包,放到/WEB-INF/lib目录下-->
            
    <jar destfile="${webapp}/WEB-INF/lib/test.jar">
                
    <fileset dir="${basedir}/WebRoot/WEB-INF/classes">
                    
    <include name="**/*.class" />
                
    </fileset>
            
    </jar>
        
    </target>
    </project>

    怎么样?我们上面用到了copy,delete,mkdir,fileset,include,excludes这些标签,你可明白?

  • 相关阅读:
    软件测试从业者,试用期生存指南(完整版)
    学测试,看视频?NONONO,除非这种情况
    vi / vim 字符替换详解
    Centos 下 mysql 安装过程
    Web测试到底是在测什么(资料合集)
    我花了两个小时,写了这份年终总结 。
    拒绝无效加班 !
    你离月薪30K还差哪些?
    从业十年分享:你应该知道的一些测试职业事实!
    别再TM跟我说找不到满意的工作!
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330229.html
Copyright © 2020-2023  润新知