常用Ant 的元素详细介绍

常用Ant 的元素详细介绍

按照元素功能的不同我们又把这些元素分为两大类
Tasks :使用中我们也是使用 Tasks 的元素比较多
Types:主要是一个文件操作的功能。

1.tasks

元素作用属性
projectant中一个project,project可以有多个targetname,default,basedir
targettarget(执行单元/任务),多个target之间有depends关系name,depends,if,unless,description
property参量或者参数的定义,project 的属性可以通过 property 元素来设定 ,也可在 Ant 之外设定。若要在外部引入某文件,例如 build.properties 文件(<property file=“build.properties”/> )
copycopy 将文件或者 FileSet 复制到一个新的文件或者目录file,todir,tofile
delect删除dir,file,fileset
mkdir创建目录dir
move移动文件或目录file,todir,tofile
echo根据日志或监控器的级别输出信息message、 file 、append 和 level
jar用来生成一个jar文件destfile,basedir,includes,exchudes,compress
javadoc
environment

属性介绍:
在这里插入图片描述在这里插入图片描述在这里插入图片描述例子:
在这里插入图片描述在这里插入图片描述
远程的 copy
在这里插入图片描述
sshexec 连接到服务器,接下来就可以使用 scp 命令复制了

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
mainfest 是jar包中的 MEAT-INF 中的 MANIFEST.MF 中的文件内容。
javadoc

javadoc 是一个非常复杂的 task,一共有50多个 attribute,幸好只有四个 attribute 是必须的,那就是 sourcepath、sourcefiles、sourcepathref 和 destdir,对于sourcepath、sourcefiles 和 sourcepathref 只需要指定其中一个,如果都没有指定,那么必须提供嵌套的 sourcepath、 fileset 或者 packageset,从字面上很容易理解 sourcepath、sourcefiles、sourcepathref 是源文件所在的目录,而 destdir 是生成的 javadoc API 所在的目录。
下面是一些我们常用的 attribute:
attribute description
sourcepath 源文件目录,可用嵌套的 sourcepath 代替
sourcefiles 逗号分割的文件列表,可用嵌套的 source 代替
destdir 输出文件所在的目录,通常我们习惯将结果保存在 doc/api 下
packagenames 逗号分割的 java 包列表,可用嵌套的 package 代替
packageList 指定一个文件,文件内容是 javadoc 需要处理的包的列表
classpath 指定 class 文件所在的位置,可用嵌套的 classpath 代替
use 生成 class 和 package 的用法
version 生成 @version 的信息
author 生成 @author 的信息
windowtitle 生成的 doc 的浏览的窗口的标题
header 每一页的 header 信息
footer 每一页的 footer 信息
bottom 每一页的 bottom 信息
nodeprecated 不生成 @deprecated 的信息

常见的可以嵌套的参数如下:packageset、fileset、package、excludepackage、source、doctitle、header、footer 和 bottom,它们的具体用法请参考官方文档。
javadoc 的 sourcepath、classpath 和 bootclasspath 是 path-like 机构,也就是完全可以用嵌套的 sourcepath、 classpath 和 bootclasspath 来代替。

<javadoc packagenames="com.dummy.test.*"
           sourcepath="src"
           defaultexcludes="yes"
           destdir="docs/api"
           author="true"
           version="true"
           use="true"
           windowtitle="Test API">
           <classpath refid="compile.classpath"/>
</javadoc>
 
<javadoc author="true"
         destdir="{javadoc.dir}"
         packagenames="org.example.helloworld.*"
         sourcepath="src"
         use="true"
         version="true"
         windowtitle="Helloworld api spec"
         private="true">
         <classpath refid="compile.classpath"/>
</javadoc>
 
<javadoc destdir="docs/api" author="true" version="true" use="true" windowtitle="Test API">
    <packageset dir="src" defaultexcludes="yes">
        <include name="com/dummy/test/**" />
        <exclude name="com/dummy/test/doc-files/**"/>
    </packageset>
 
    <doctitle>
        <![CDATA[<h1>Test</h1>]]>
    </doctitle>
    <bottom>
        <![CDATA[<i>Copyright &#169; 2000 Dummy Corp. All Rights Reserved.</i>]]>
        </bottom>
    <tag name="todo" scope="all" description="To do:" />
    <group title="Group 1 Packages" packages="com.dummy.test.a*"/>
    <group title="Group 2 Packages" packages="com.dummy.test.b*:com.dummy.test.c*"/>
    <link offline="true" href="::URL::http://java.sun.com/ products/jdk/1.2/docs/api/" packagelistLoc="C:/tmp"/>
    <link href="::URL::http://developer.java.sun.com/developer/products/xml/docs/api/"/> 
  </javadoc>
11. environment

由Ant构建文件调用的外部命令或程序,env 元素制定了哪些环境变量要传递给正在执行的系统命令,env 元素可以接受以下属性。

    file表示环境变量值的文件名。此文件名要被转换位一个绝对路径。
    path表示环境变量的路径。Ant会将它转换为一个本地约定。
    value 表示环境变量的一个直接变量。
    key 表示环境变量名。

注意 file、path 或 value 只能取一个,在 property 部分我们已经介绍了该元素的功能,这里就不重复了。
12. arg

由Ant构建文件调用的程序,可以通过 arg 元素向其传递命令行参数,如 apply、exec 和 java 任务均可接受嵌套 arg 元素,可以为各自的过程调用指定参数。以下是 arg 的所有属性。

    values 是一个命令参数。如果参数中有空格,但又想将它作为单独一个值,则使用此属性。
    file 表示一个参数的文件名。在构建文件中,此文件名相对于当前的工作目录。
    line 表示用空格分隔的多个参数列表。
    表示路径,一个作为单个命令行变量的 path-like 的字符串;或作为分隔符,Ant会将其转变为特定平台的分隔符。
    pathref 引用的 path (使用 path 元素节点定义 path)的id
    prefix 前缀
    suffix 后缀

例子

<arg value="-l -a"/> 

    1

    1

是一个含有空格的单个的命令行变量。

<arg line="-l -a"/> 

    1

    1

是两个空格分隔的命令行变量。

<arg path="/dir;/dir2:\dir3"/> 

    1

    1

是一个命令行变量,其值在DOS系统上为\dir;\dir2;\dir3;在Unix系统上为/dir:/dir2:/dir3 。
13. javac

javac 使我们再熟悉不过的了,其功能就是把 java 程序编译成 class 文件,我们来看看在 Ant 中它又焕发可什么样的光彩。
先看一个基本的 javac 命令:

javac -d build/classes -classpath %CLASSPATH%;lib/outlib.jar -sourcepath src -g

    1

    1

该标签用于编译一个或一组java文件,其属性如下。

    srcdir表示源程序的目录,相当于 javac 命令的 -sourcepath 参数,srcdir 也是 javac 的隐式 implicit 的 FileSet,因此 srcdir 支持 FileSet 的所有特征。
    destdir表示 classes 文件的输出目录,相当于 javac 命令的 -d 参数。
    include表示被编译的文件的模式。
    excludes表示被排除的文件的模式。
    classpath表示所使用的类路径。
    debug表示包含的调试信息,debug=”yes” 相当于 javac 命令的 -g 参数,debug=”no” 相当于 javac 命令的 -g:none 参数。
    optimize表示是否使用优化,默认是 off,optimize=”on” 相当于 javac 命令的 -o 参数。
    verbose 表示提供详细的输出信息。
    fileonerror如果编译错误,build 是否继续,默认是 true。
    deprecation 输出对于那些使用了 deprecation 的API的源文件的位置,默认是 off,deprecation=”on” 相当于 javac 命令的 -deprecation 参数。
    fork 使用外部的JDK编译器来运行 javac,默认是 no,采用 yes 可以取得更好的效率,当然对机器的要求也高。

示例:

    <javac srcdir="${src}" destdir="${dest}"/>
    <!-- 设置jvm内存
    <javac srcdir="src" fork="true"/> 
    <javac srcdir="src" fork="true" executable="d:\sdk141\bin\javac" 
    memoryMaximumSize="128m"/> 
    -->
     
    <javac destdir="{build.classes.dir}"
           debug="{build.debug}"
           includeAntRuntime="yes"
           srcdir="{sirc.dir}">
           <classpath refid="compile.classpath"/>
           <include name="**/*.java"/>
    </javac>
    
<?xml version="1.0"?>
<project name="javacTest" default="compile" basedir=".">
    <target name="clean" description="删除编译后产生的目录及文件">
        <delete dir="build" />
    </target>
 
    <target name="compile" depends="clean" description="编译源文件">
        <mkdir dir="build/classes" />
        <javac srcdir="src" destdir="build/classes" />
    </target>
</project>
  1. java

java 我们也是很熟悉,它就是用来执行编译生成的.class文件,其属性如下:

classname 表示将执行的类名。
jar表示包含该类的JAR文件名。
classpath所表示用到的类路径。
fork表示在一个新的虚拟机中运行该类。
failonerror表示当出现错误时自动停止。
output 表示输出文件。
append表示追加或者覆盖默认文件。

示例

<java classname="com.hoo.test.HelloWorld" classpath="${hello_jar}"/>

编译并运行JAVA程序

<?xml version="1.0"?>
<project name="javaTest" default="run" basedir=".">
    <target name="clean" description="清除目录">
        <delete dir="build" />
    </target>
 
    <target name="compile" depends="clean" description="编译">
        <mkdir dir="build/classes" />
        <javac srcdir="src" destdir="build/classes" />
    </target>
 
    <target name="run" depends="compile" description="运行">
        <java classname="AntTest">
            <classpath>
                <pathelement path="build/classes" />
            </classpath>
        </java>
    </target>
</project>

Types

filelist

filelist 是一个支持命名的文件列表的数据类型,包含在一个 filelist 类型中的文件不一定是存在的文件。以下是其所有的属性:

dir是用于计算绝对文件名的目录。
files 是用逗号分隔的文件名列表。
refid 是对某处定义的一个 filelist 的引用。 

注意 dir 和 files 都是必要的,除非指定了 refid (这种情况下,dir 和 files 都不允许使用)。

示例

文件集合 ${doc.src}/foo.xml和${doc.src}/bar.xml. 这些文件也许还是不存在的文件.
<filelist id="docfiles" dir="${doc.src}" files="foo.xml bar.xml"/> 
 
<filelist refid="docfiles"/> 
 
<filelist id="docfiles" dir="${doc.src}">
    <file name="foo.xml"/>
    <file name="bar.xml"/>
</filelist>

fileset

fileset 数据类型定义了一组文件,并通常表示为 fileset 元素。不过,许多 ant 任务构建成了隐式的 fileset,这说明他们支持所有的 fileset 属性和嵌套元素,与 filelist 不同的是 fileset 下的文件必须存在。以下为 fileset 的属性列表:

dir表示 fileset 的基目录。
casesensitive的值如果为 false,那么匹配文件名时,fileset 不是区分大小写的,其默认值为 true。
defaultexcludes 用来确定是否使用默认的排除模式,默认为 true。
excludes 是用逗号分隔的需要派出的文件模式列表。
excludesfile 表示每行包含一个排除模式的文件的文件名。
includes 是用逗号分隔的,需要包含的文件模式列表。
includesfile 表示每行包括一个包含模式的文件名。

示例

 <fileset id="lib.runtime" dir="${lib.path}/runtime">
        <include name="**/*.jar"/>
        <include name="**/*.so"/>
        <include name="**/*.dll"/>
    </fileset>
     
    <fileset id="lib.container" dir="${lib.path}/container">
        <include name="**/*.jar"/>
    </fileset>
     
    <fileset id="lib.extras" dir="${lib.path}">
        <include name="test/**/*.jar"/>
    </fileset>

下面看一下 fileset 和 patternset 的简单使用:

  <fileset id="sources" dir="src"
        includes="**/*.java"
        excludes="**/test/**/*.java">
    </fileset>

等价于

<fileset id="sources" dir="src">
    <patternset>
        <include name="**/*.java"/>
        <exclude name="**/test/**/*.java"/>
    </patternset>
</fileset>
等价于

    <patternset id="non.test.source">
        <include name="**/*.java"/>
        <exclude name="**/test/**/*.java"/>
    </patternset>
    <fileset id="sources" dir="src">
        <patternset refid="non.test.source"/>
    </fileset>

filterset

filterset 定义了一组过滤器,这些过滤器将在文件移动或复制时完成文件的文本替换。
主要属性如下:

begintoken 表示嵌套过滤器所搜索的记号,这是标识其开始的字符串。
endtoken 表示嵌套过滤器所搜索的记号这是标识其结束的字符串。
id 是过滤器的唯一标志符。
refid 是对构建文件中某处定义一个过滤器的引用。

示例

  <!-- 将目标文件build.dir目录中的version.txt文件内容中的@DATE@替换成TODAY当前日期的值,并把替换后的文件存放在dist.dir目录中 -->
    <copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt">
        <filterset>
            <filter token="DATE" value="${TODAY}"/>
        </filterset>
    </copy>
     
    <!-- 自定义变量的格式 -->
    <copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt">
        <!-- 从version.txt中的%位置开始搜索,到*位置结束,进行替换内容中的@DATE@替换成TODAY当前日期的值-->
        <filterset begintoken="%" endtoken="*">
            <filter token="DATE" value="${TODAY}"/>
        </filterset>
    </copy>
     
    <!-- 使用外部的过滤定义文件 -->
    <copy toDir="${dist.dir}/docs">
        <fileset dir="${build.dir}/docs">
            <include name="**/*.html">
        </fileset>
        <filterset begintoken="%" endtoken="*">
            <!-- 过来文件从外部引入,过来的属性和值配置在dist.properties文件中 --> 
            <filtersfile file="${user.dir}/dist.properties"/>
        </filterset>
    </copy>
     
    <!-- 使用引用方式,重复利用过滤集 -->
    <filterset id="myFilterSet" begintoken="%" endtoken="*">
        <filter token="DATE" value="${TODAY}"/>
    </filterset>
     
    <copy file="${build.dir}/version.txt" toFile="${dist.dir}/version.txt">
        <filterset refid="myFilterSet"/>
    </copy>

path

path 元素用来表示一个类路径,不过它还可以用于表示其他的路径。在用作几个属性时,路经中的各项用分号或冒号隔开。在构建的时候,此分隔符将代替当前平台中所有的路径分隔符,其拥有的属性如下:

location 表示一个文件或目录。Ant在内部将此扩展为一个绝对路径。
refid 是对当前构建文件中某处定义的一个 path 的引用。
path表示一个文件或路径名列表。

path 支持的嵌套元素如下:

0..n 个嵌套的 pathelement, pathlelement 定义在路径下的一个或者多个文件,pathelement 支持 location 和 path 这两个 attribute,用法和 path 元素一样;
0..n 个嵌套的 fileset ;
0..n 个嵌套的 path; 

示例

 <path id="buildpath">
        <fileset refid="lib.runtime"/>
        <fileset refid="lib.container"/>
        <fileset refid="lib.extras"/>
    </path>
     
    <path id="src.paths">
        <fileset id="srcs" dir=".">
            <include name="src/**/*.java"/>
        </fileset>
    </path>
     
    <path>
        <pathelement location="{libdir}/servlet.jar"/>
        <pathelement location="{libdir}/logging.jar"/>
        <pathelement path="{builddir}"/>
        <pathelement path="{utilpath}"/>
    </path>

path 最常用的是 classpath 这个形式,但是也用于其他用途。

  <classpath>
        <pathelement path="{builddir}"/>
    </classpath>

等价于

<classpath path="{builddir}"/>
 
<classpath>
    <pathelement path="{builddir1}"/>
    <pathelement path="{builddir2}"/>
</classpath>

等价于

<classpath path="{builddir1};{builddir2}"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值