• ant编译tomcat-web项目


    环境依赖说明 : jdk
    不同版本的ant需匹配不同版本的jdk
    1.9.*版本-运行时至少需要Java5
    1.10.*版本-运行时至少需要Java8
    官网 : http://ant.apache.org/
    下载地址 : https://ant.apache.org/bindownload.cgi

    • 安装
    wget https://mirror.bit.edu.cn/apache//ant/binaries/apache-ant-1.10.8-bin.tar.gz
     
    tar zxvf apache-ant-1.10.8-bin.tar.gz -C /usr/local/
     
    ln -s /usr/local/apache-ant-1.10.8/bin/ant /usr/sbin/
    
    • 添加ant配置文件

    在项目目录中添加ant脚本文件
    vim build.xml

    <?xml version="1.0" encoding="UTF-8"?>
     
    <project basedir="." name="web-test" default="buildwar">
     
        <!-- 配置环境变量 -->
        <property name="program.name" value="web-test" />
        <property name="com.dir" location="./WebRoot/WEB-INF/classes/com" />
        <property name="program.dir" location="./${program.name}" />
        <property name="source.dir" location="./WebRoot" />
        <property name="lib.dir" location="./${program.name}/WEB-INF/lib" />
        <property name="class.dir" location="./${program.name}/WEB-INF/classes" />
        <property name="src" location="./src" />
     
        <!-- 准备程序目录 -->
        <target name="init"  description="准备程序所需目录">
            <delete dir="${com.dir}" />
            <delete dir="${program.dir}" />
            <mkdir dir="${com.dir}" />
            <mkdir dir="${program.dir}" />
        </target>
     
        <!-- 将已有文件copy至项目目录 -->
        <target name="prepare" depends="init" description="复制项目文件至新目录">
            <copy todir="${program.dir}" overwrite="true">
                <fileset dir="${source.dir}" />
            </copy>
            <copy todir="${class.dir}/" overwrite="true">
                <fileset dir="${src}">
                    <exclude name="com/"/>
                </fileset>
            </copy>
        </target>
     
        <!-- 编译Java文件 -->
        <target name="compile" depends="init,prepare" description="编译Java文件">
            <javac srcdir="${src}"
                destdir="${class.dir}"
                fork="true"
                debug="on"
                encoding="UTF-8"
                includeantruntime="on">
                <classpath>
                    <fileset dir="${lib.dir}">
                        <include name="**/*.jar" />
                    </fileset>
                </classpath>
            </javac>
        </target>
     
        <!-- 打war包 -->
        <target name="buildwar" depends="init,prepare,compile" description="将编译后项目进行打包">
            <war destfile="${program.name}.war"
                webxml="${program.dir}/WEB-INF/web.xml"
                defaultexcludes="true">
                <fileset dir="${program.dir}">
                    <!-- <include name="**/**" /> -->
                    <!-- <exclude name="**/**" /> -->
                </fileset>
            </war>
        </target>
     
    </project>
    
    • 使用说明
    ##在目录中,直接执行ant命令
    ant
     
    ##在目录中,指定配置文件
    ant -f build.xml
    


    • 配置文件参数说明:

    包含一个project节点和至少一个target节点,target节点包含多个task元素。简单说,target节点代表着你的构建目标,而该目标是由多个操作/任务(task)来达成的。

    project   ---   根节点,代表一个工程
    ###属性说明:
     
    name:项目名称。 (非必填)
    basedir:指定基路径的位置。该属性没有指定时,使用Ant的构件文件的附目录作为基准目录。 (非必填)
    default:指定project默认执行时所执行的target的名称。 (非必填)
    
    property   ---   设置一个或多个属性(可以在其它地方通过${属性名}进行引用)
    ###属性说明:
     
    name:要设置的属性名称。
    value:属性的值。
    location:将属性设置为给定文件的绝对路径。如果此属性的值为绝对路径,则保持不变,否则会相对于项目的basedir解析路径。
    refid:引用其他位置的定义。
    resource:包含属性文件格式属性设置的类路径的资源名称。
    file:要加载的属性文件位置。
    url:包含属性文件格式设置的url。
    environment:检索环境变量时使用的前缀。
    classpath:查找资源使用的类路径。
    classpathref:类路径的引用。
    prefix:通过file、resouorce和url加载属性时使用的前缀。
    
    target   ---   目标节点,代表着一个构建目标
    ###属性说明:
     
    name:target的名字。 (必填)
    depends:用逗号分隔的target的名字列表,也就是依赖表。 (非必填)
    description:关于target功能的简短描述。 (非必填)
    if:满足条件执行(true)。 (非必填)
    unless:不满足条件执行(false)。 (非必填)
    
    target中常见tasks说明:
     
    ============
    delete   ---   删除目录或文件
    ###属性说明:
    dir: 表示要删除的目录,该目录下的文件和子目录都会被删除
    file: 表示要删除的文件
     
    ============
    mkdir   ---   创建目录
    ###属性说明:
    dir: 表示要创建目录
     
    ============
    echo   ---   向屏幕或文件输出信息
    ###属性说明:
    message: 表示要输出的信息
    file:表示信息输出到该文件中(如果指定了该属性,信息将不会在屏幕上显示)
    level:表示信息级别(未指定该属性时的默认级别为"warning")
     
    ============
    copy   ---   拷贝文件或目录
    ###属性说明:
    todir: 表示拷贝到哪个目录下
    includeemptydirs:是否拷贝空目录
    file:要拷贝的单个文件(只针对单个文件的拷贝,上例中没有指定该属性,而是通过内嵌<fileset>来指定多个文件)
     
    ============
    javac   ---   编译源文件
    ###属性说明:
    srcdir: 源文件路径(多个源之间用:分隔,可通过内嵌<src>元素进行设定,如上例)
    destdir: 存放编译后的class文件路径
    includes: 包含的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。该属性省略时,所有的.java文件被包含进去
    excludes: 排除的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。
    debug: 编译时是否显示调试信息
    includeantruntime: 是否包含ant库路径
    classpath: 依赖库路径(上例中通过内嵌<classpath>元素进行了设定)
     
    ============
    jar   ---   将class文件打成jar包
    ###属性说明:
    destfile:将创建的jar包位置
    basedir:将被打成jar包的目录(或通过内嵌的<fileset>元素进行设定)
    includes:包含的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。该属性省略时,所有的文件被包含进去
    excludes:排除的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。
     
    ============
    war   ---  将项目文件打包成war包
    ###属性说明:
    destfile:将创建的war包位置名称
    webxml:指定web相关信息文件路径位置
    basedir:将被打成war包的目录(或通过内嵌的<fileset>元素进行设定)
    
    ant中经常需要指定资源集合,主要通过下面元素指定
     
    ============
    fileset
    ###属性说明:
    dir    文件集合的根目录(该目录下的文件都会被包含)
    file   快捷指定单个文件
    includes  包含的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。该属性省略时,所有的文件被包含进去
    excludes  排除的文件列表(多个列表用逗号或空格分隔,列表可用通配符指定)。
    可内嵌<include>、<exclude>、<includesfile>、<excludesfile>等元素
     
    ============
    patternset   ---   模式集合
    ###属性说明:
    id 唯一标识(其它<patternset>元素通过refid指向该模式)
    可内嵌<include>、<exclude>、<includesfile>、<excludesfile>等元素
     
    ============
    include   ---   指定单个包含
    exclude   ---   指定单个排除
    ###属性说明:
    name 要包含或排除的模式。
     
    ============
    includesfile   ---   指定单个包含
    excludesfile   ---   指定单个排除
    ###属性说明:
    name 模式文件名(文件内容为包含或排除模式)
    
    ant运行java类,或执行编译时,都需要指定classpath,可通过下面三个元素来指定引用的jar包或class文件
    ============
    classpath   ---   类路径,内嵌在<javac>,<java>等元素中,表示依赖库路径
    ###属性说明:
    refid    指向该id对应的元素
    location 单个文件或目录(目录可以是相对路径或绝对路径,相对路径是指相对于工程的基准路径)
    path     多个location的集合(各location以冒号或分号进行分隔),一般用来引用预定义的路径,如引用环境变量${classpath}
    其它说明:可内嵌<fileset>、<pathelement>等元素来指定jar文件或目录
     
    ============
    path   ---   类路径集合,被<classpath>或其它<path>引用。
    path用法类似<classpath>元素,但是<path>跟<target>同级,而classpath是内嵌在<java>或<javac>元素中。
     
    ============
    pathelement   ---   单个类路径,内嵌在<classpath>或<path>中
    ###属性说明
    location 单个文件或目录(目录可以是相对路径或绝对路径,相对路径是指相对于工程的基准路径)
    path     多个location的集合(各location以冒号或分号进行分隔),一般用来引用预定义的路径,如引用环境变量${classpath}
    

    • javac指定编译器

    修改build.xml中配置文件,增加配置executable="/usr/local/jdk1.8.0_241/bin/javac"

        <target name="compile" depends="init,prepare" description="编译Java文件">
            <javac executable="/usr/local/jdk1.8.0_241/bin/javac"
                srcdir="${src}"
                destdir="${class.dir}"
                fork="true"
                debug="on"
                encoding="UTF-8"
                includeantruntime="on">
                <classpath>
                    <fileset dir="${lib.dir}">
                        <include name="**/*.jar" />
                    </fileset>
                </classpath>
            </javac>
        </target>
    
  • 相关阅读:
    第五次站立会议
    第四次站立会议
    第三次晚间站立总结会议
    易校小程序典型用户需求分析
    第三次站立会议
    第二次晚间站立总结会议
    第二次站立会议
    第一次晚间站立总结会议
    MyBatis注解
    延迟加载与缓存
  • 原文地址:https://www.cnblogs.com/taoyuxuan/p/13367629.html
Copyright © 2020-2023  润新知