zoukankan      html  css  js  c++  java
  • Ant 学习笔记

    一、Ant安装和配置

    • 下载ant发布包
    • 解压缩到一个目录即可
    • 将该目录下的子目录bin添加到PATH环境变量中

    二、Ant入门

    ant的使用非常简单,安装好ant后,在构建文件中(默认名字为build.xml)配置好构建任务,然后调用ant命令,配置的任务就开始执行了。

    1. 编写构建文件

    创建一个用于编译和打包Java项目的配置文件build.xml,默认为build.xml,也可以自己随便起,执行的时候使用-f 选项指定这个文件即可:

    <?xml version="1.0" encoding="UTF-8" ?>

    <project name="AntDemo" default="compile" basedir=".">

      <property name="src.dir" value="src"/>

      <property name="build.dir" value="build"/>

      <property name="build.classes" value="${build.dir}/classes"/>

      <property name="build.lib" value="${build.dir}/lib"/>

      <target name="prepare" description="xxxxxxx">

        <mkdir dir="${build.dir}"/>

        <mkdir dir="${build.classes}"/>

        <mkdir dir="${build.lib}"/>

      </target>

      

      <target name="clean" description="xxxxx">

        <delete dir="${build.fir}"/>

      </target>

      <target name="compile" depends="prepare" descriptoin="xxxxxxxxx">

        <javac srcdir="${src.dir}" destdir="${build.classes}"/>

      </target>

      <target name="jar" depends="compile" descriptoin="xxxxxxxxx">

        <jar jarfile="${build.lib/antDemo.jar}" basedir="${build.classes}" excludes="**/*Test.class"/>

      </target>

      <target name="all" depends="clean, jar"/>

    </project>

    配置文件,保证是一个合法的XML文件并且使用了正确的标签和属性,就可以使用Ant运行。

    根据这个配置文件可以看出,Ant把任何任务分成3层(工程-目标-任务)

    • 最基层的 Project
    • 目标 Target:可以在ant命令中调用的基本单位,如clean, compile, jar等。在命令行可以这样调用 ant clean 或 ant clean jar。Target之间可以存在依赖关系,一个Target执行前会先执行它依赖的那些Target。Project可以设置默认的Target,ant命令中不指定任何Target时就调用这个默认的。
    • 任务Task:各种Task可以执行各种不同的具体任务,如mkdir,delete,javac,jar等。

    Task详细说明可以查看官方文档: http://ant.apache.org/manual/tasklist.html

    Ant文件中用Property标签配置属性值,在定义之后的其他地方就可以引用,避免硬编码。

    所有的构建文件有且仅有一个<project>元素,其中至少要有一个<target>元素。

    2. 运行Ant

    ant命令语法格式如下:

    ant [option] [target]

    调用ant时默认全在当前目录中查找默认的构建文件名:build.xml

    也可以用ant -f mybuild.xml的方式手动指定构建文件

    以上面的构建配置文件为例,下面的几种调用都可以: 

    ant                              调用默认构建文件(build.xml)中的默认目标(compile)
    
    ant -f mybuild.xml  jar          调用构建文件mybuild.xml中的jar目标
    
    ant clean jar                    调用默认构建文件(build.xml)中的clean和jar目标。需要注意多个目标会按调用先后顺序执行。如果调用ant jar clean就是先编译打包(jar),然后全清理掉(clean),就白干了。

     Ant执行时会按执行顺序显示每个Target的名字,也会显示每个任务的名字([任务名])和任务中输出的信息。

     3. 查看构建文件所有目标

    ant [-f BUILDFILE] -projecthelp

    使用这个命令可以列出构建文件中的所有目标和description信息。

    4. Ant命令选项

    • -h,  -help   查看帮助信息
    • -p,  -projecthelp  查看构建文件中的所有目标信息
    • -version  显示Ant版本
    • -q,  -quiet   抑制并非由构建文件中echo任务所产生的大多数输出消息
    • -S,  -silent   只显示Task输出和构建失败信息
    • -v,  -verbose   显示构建过程中每个操作的详细消息, 不能和-debug同时使用
    • -d,  -debug     显示Ant和任务开发人员已经标志位调试信息的消息。不能与-verbose同时使用
    • -e,  -emacs     对日志消息进行格式化,使其能够Emacs的shell模式解析。具体就是打印任务消息时不缩排也不输出前面的 [任务名]
    • -diagnostics    显示对调试有用的信息
    • -f <file>,  -buildfile <file>, -file <file>   指定一个构建文件,而不是使用默认的build.xml
    • -D<property>=<value>    通过命令行向构建过程中传递属性值
    • -propertyfile <propertyfile>   从property文件中加载属性值并传递到构建过程
    • -s <file>,  -find <file>     指定Ant应当使用的构建文件,如果指定的filename文件在当前目录中没找到,就到父目录中进行搜索,直到到达文件系统的根,还找不到则构建失败。
    • -k,  -keep-going    执行不依赖失败目标的所有目标。
    • -lib <path>    指定查找jars和classes的目录
    • -l  <file>, -logfile <file>   将日志重定向到指定文件
    • -logger <class>   指定一个类来处理Ant的日志记录。该类必须实现了org.apache.tools.ant.BuildLogger接口
    • -listener <class>   为Ant设置一个监听类,将其增加到Ant的监听器列表中。Ant与IDE或其他程序集成时非常有用,后面会专门写这个。
    • -inputhandler <class>  指定用于处理输入请求的类
    • -main <class>   覆盖Ant正常的入口点
    • -noinput    不允许交互式输入
    • -autoproxy   Java1.5+,使用OS的代理设置
    • -nice number
    • -nouserlib
    • -noclasspath

     三、构建文件

    1.Ant的构建块

    Project(工程)    任何构建文件的第一个元素必须是<project>标签,而且只能有一个。

    • name属性     工程的名字,也是构建文件的标识符。
    • default属性    运行Ant不指定Target时,默认执行的Target。可以设置成一个构建文件中定义的Target名字。推荐默认Target显示构建文件的帮助信息或者执行完成的构建。
    • basedir属性   定义工程的根目录,一般情况下都是" . ",也就是构建文件所在的目录(不是运行Ant命令是的目录)。在一个多层次的项目中,basedir还可以定义不同的参考点。

    Target(目标)  一个Project可以包含多个Target,一个总的任务过程可以拆分成几个target,每个Target可以单独调用。可以把target理解成能够单独执行的一个个步骤(阶段)。具体怎么拆分这个总任务,拆分粒度是粗还是细,把哪些Task放在哪几个Target中,都是编写构建文件要考虑的问题。一般来说,粒度更小可以更灵活的组合,有些target失败也不会影响另一些的执行。但是粒度也不能太小,太小了会很琐碎不好维护。

    • name属性
    • depends属性
    • description属性

    Task(任务)  任务是构建文件中的最小构建单位。通过Target把一个总过程组织成了几个大的Target目标(步骤),但是Target并不做任何具体的工作,Target下面有包含一些Task,所有的具体工作都是靠这些task来完成。Ant提供非常多的Task,如编译,大包,文件系统操作等等。Ant中每个任务对应于Ant对象模型中的一个Java对象,要自定义新的任务就是要编写执行该任务类然后提供给Ant调用。很多系统命令也都是用Task包装,而不是直接调用shell命令,在不同的操作系统上Task的使用方式是完全一致的。

    构建文件中任务标签内部也可以有很多层次。但是Task内部的这些层次结构和Java类的层次结构没有任何关系了。

    Task标签不再有统一的属性和子元素,内部层次完全取决于具体的任务。

    2. 数据元素

    保存数据的变量和抽象数据类型。数据元素有两类:Property和DateType

    Property:

    表示字符串的“键-值”对;使用${propName}的形式引用Property数据。

  • 相关阅读:
    JavaScript Basic Memo
    移动端WEB开发备忘录
    重学前端
    roadhog 构建优化
    ES6 memo
    styled-components 背后的魔法
    怎么在多场景下使用不同的 git 账号 commit
    三方登录总结
    Promise 错误处理
    观察者模式 vs 发布-订阅模式
  • 原文地址:https://www.cnblogs.com/anniedaniel/p/12400888.html
Copyright © 2011-2022 走看看