Apache Ant教程

Apache Ant

安装Ant

下载安装包:http://ant.apache.org

配置环境变量:ANT_HOME=ant dir

添加批处理命令ant_path/bin到环境变量path中

验证是否安装成功:cmd -> ant -version

Ant构建文件

一般来说,Ant 的构建文件默认为 build.xml,放在项目顶层目录中。然而,并没有限制构建文件必须命名为 bulid.xml,也并不限制放在项目顶层目录中

构建文件需要包含项目元素 (project 标签) 和至少一个目标元素 (target 标签)

  • 标签

    属性 描述
    name 项目名称[可选]
    default 构建脚本默认运行的目标,需要指定一个target,一个project 可以包含多个target [必填]
    basedir 设置基准目录,未指定时默认为Ant 的构件文件的附目录作为基准目录
  • 标签

    一个target是一系列你想运行的任务 (tasks),运行时看成一个整体单元

    属性 描述
    name target的名称
    depends 依赖的其他target,多个依赖需要使用","分开,被依赖的 target 会按照顺序先执行 [可选]
    description target的功能描述信息 [可选]
    if 用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行 [可选]
    unless 该属性的功能与 if 属性的功能正好相反
编译第一个Ant配置文件
  • 创建build.xml

   <project name="Hello World Project" default="info">

   <target name="info">
      <echo>Hello World - Welcome to Apache Ant!echo>
   target>

project>
  • 打开终端,执行ant info或者 ant 命令
  • echo 任务主要负责打印消息。在我们的例子中,执行 echo 任务后,打印出 “hello world” 消息
声明Ant属性

Ant 使用属性 (property) 标签来让你能够具体说明属性

默认情况下,Ant 提供以下预定义的属性

属性 作用
ant.file 该构建文件的完整地址
ant.version 安装的 Apache Ant 的版本
basedir 构建文件的基目录的绝对路径,作为 project 标签的 basedir 属性
ant.java.version Ant 使用的 JAVA 语言的软件开发工具包的版本
ant.project.name 项目的名字,具体声明为 project 标签的 name 属性
ant.project.default-target 当前项目的默认target
ant.project.invoked-targets 在当前项目中被调用的目标的逗号分隔列表
ant.core.lib Ant 的 jar 文件的完整的地址
ant.home Ant 安装的主目录
ant.library.dir Ant 库文件的主目录,特别是 ANT_HOME/lib 文件夹

用户也可以使用 property 元素定义一些额外的属性

引用外部属性文件

对于大项目,最好将设置属性的信息存储在一个独立的文件中

一般情况下,属性文件都被命名为 build.properties, 并且与 build.xml 存放在同一目录层。 你可以基于部署环境 ,比如: build.properties.devbuild.properties.test 创建多个 build.properties 文件

引用外部配置文件

<property file="build.properties"/>
Ant 数据类型

Ant 提供一些预定义的数据类型,代表一组已经在产品中配置好的服务

  • 文件集:

    文件集的数据类型代表了一个文件集合。它被当作一个过滤器,用来包括或移除匹配某种模式的文件

    例:选择源文件夹中所有的 .java 文件,除了那些包含有 ‘Stub’ 单词的文件

    <fileset dir="${src}" casesensitive="yes">
       <include name="**/*.java"/>
       <exclude name="**/*Stub*"/> <--!排除含有'Stub' 单词的文件-->
    fileset>
    
  • 模式集合:

    模式集合指的是一种模式,基于这种模式,能够很容易地过滤文件或者文件夹

    • ? -仅匹配一个字符
    • ***** -匹配零个或者多个字符
    • ** -递归地匹配零个或者多个目录

    例:

    <patternset id="java.files.without.stubs">
       <include name="src/**/*.java"/>
       <exclude name="src/**/*Stub*"/>
    patternset>
    
  • 文件列表:

    • 文件列表数据类型与文件集相类似,除了以下几处不同:

      文件列表包含明确命名的文件的列表,同时其不支持通配符

      文件列表数据类型能够被应用于现有的或者还不存在的文件中

    • 例:属性 webapp.src.folder 指向该项目中的 Web 应用的源文件夹

      <filelist id="config.files" dir="${webapp.src.folder}">
         <file name="applicationConfig.xml"/>
         <file name="faces-config.xml"/>
         <file name="web.xml"/>
         <file name="portlet.xml"/>
      filelist>
      
  • 过滤器集合:

    通常使用一个过滤器集合数据类型结合拷贝任务,你可以在所有文件中使用一个替换值来替换掉一些与模式相匹配的文本

    • 例:

      <copy todir="${output.dir}">
         <fileset dir="${releasenotes.dir}" includes="**/*.txt"/>
         <filterset>
            <filter token="VERSION" value="${current.version}"/>
         filterset>
      copy>
      
      • 属性 output.dir 指向项目的输出文件夹。
      • 属性 releasenotes.dir 指向项目的发行说明文件夹。
      • 属性 current.version 指向项目的当前版本文件夹。
      • 拷贝任务,顾名思义,是用来将文件从一个地址拷贝到另一个地址
  • 路径:

    path 数据类型通常被用来表示一个类路径。各个路径之间用分号或者冒号隔开。然而,这些字符在运行时被替代为执行系统的路径分隔符

    <path id="build.classpath.jar">
       <pathelement path="${env.J2EE_HOME}/${j2ee.jar}"/> //pathelement主要用来引用一个文件,一个目录
       <fileset dir="lib">  //fileset:主要用来引用一个目录
          <include name="**/*.jar"/>
       fileset>
    path>
    
编译项目
  • 编译:

    属性 描述
    srcdir 表示源程序的目录
    destdir 表示class文件的输出目录
    include 表示被编译的文件的模式
    excludes 表示被排除的文件的模式
    classpath 表示所使用的类路径
    debug 表示包含的调试信息
    optimize 表示是否使用优化
    verbose 表示提供详细的输出信息
    fileonerror 表示当碰到错误就自动停止
<target name="build" description="Compile main source tree java files">
   <mkdir dir="${build.dir}"/>
   <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
      deprecation="false" optimize="false" failonerror="true">
      <src path="${src.dir}"/>
      <classpath refid="master-classpath"/>
   javac>
target>
  • 删除构建文件夹中的所有文件:

    <target name="clean" description="Clean output directories">
       <delete>
          <fileset dir="${build.dir}">
             <include name="**/*.class"/>
          fileset>
       delete>
    target>
    
打包项目

使用标签对项目进行打包

属性 描述
basedir 表示输出 JAR 文件的基目录。默认情况下,为项目的基目录
compress 表示告知 Ant 对于创建的 JAR 文件进行压缩。
keepcompression 表示 project 基目录的绝对路径
destfile 表示输出 JAR 文件的名字
duplicate 表示发现重复文件时 Ant 执行的操作。可以是添加、保存、或者是使该重复文件失效
excludes 表示移除的文件列表,列表中使用逗号分隔多个文件。
excludesfile 与上同,但是使用模式匹配的方式排除文件
inlcudes 与 excludes 正好相反
includesfile 表示在被归档的文件模式下,打包文件中已有的文件。与 excludesfile 相反
update 表示告知 Ant 重写已经建立的 JAR 文件

示例:

<jar destfile = "${web.dir}/lib/util.jar"
   basedir = "${build.dir}/classes"
   includes = "faxapp/util/**"
   excludes = "**/Test.class">

   <manifest>  //设置主启动类
      <attribute name = "Main-Class" value = "com.tutorialspoint.util.FaxUtil"/>
   manifest>

执行:ant build-jar

你可能感兴趣的:(Java,apache,java)