zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    archlinux .bash_history
    Ubuntu环境下挂载新硬盘
    软碟通 UltraISO U启替代品 Win32DiskImager 无设备 无盘符 无u盘 无优盘 解决方案 之diskpart
    delphi Integer overflow
    MSBuild Tools offline
    delphi synedit免费的拼写检查器dll
    git 自定义命令行
    lua编译
    gcc ar
    Windows Subsystem for Linux (WSL)挂载移动硬盘U盘 卸载 c d 盘
  • 原文地址:https://www.cnblogs.com/taoyuxuan/p/13367629.html
Copyright © 2011-2022 走看看