Ant解析与使用

Ant的使用

简介

一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,多用于 Java 环境中的软件开发。由Apache软件基金会所提供.Ant 也可以有效地用于构建非Java应用程序,如 C 或 C++ 的应用程序。更一般地,Ant 可以用来驾驶任何类型的能在目标和任务来描述过程

安装与使用

​ 下载:http://ant.apache.org/bindownload.cgi

​ 安装:解压缩到指定目录下即可

​ 环境变量配置:

​ ANT_HOME:安装目录(D:\program\ant-1.10.5)

​ path:%ANT_HOME%\bin

​ 验证:cmd命令:ant -verison

官方文档

http://ant.apache.org/manual/

Ant命令

​ 运行默认build.xml:cd进入build目录下,运行命令:ant

​ 运行指定文件:运行命令:ant -buildfile ant -lib xxx.jar -f

attributedescription
-help显示描述ant 命令及其选项的帮助信息
-projecthelp显示包含在构建文件中的、所有用户编写的帮助文档。即为各个中description 属性的文本,以及包含在元素中的任何文本。将有description 属性的目标列为主目标(Main target),没有此属性的目标则列为子目标(Subtarget)。
-version要求ant 显示其版本信息,然后退出。
-quiet抑制并非由构建文件中的echo 任务所产生的大多数消息。
-verbose显示构建过程中每个操作的详细消息。此选项与-debug 选项只能选其一。
-debug显示Ant 和任务开发人员已经标志为调试消息的消息。此选项与-verbose 只能选其一。
-emacs对日志消息进行格式化,使它们能够很容易地由Emacs 的shell 模式(shellmode)所解析;也就是说,打印任务事件,但并不缩排,在其之前也没有[taskname]。
-logfile filename将日志输出重定向到指定文件。
-logger classname指定一个类来处理Ant 的日志记录。所指定的类必须实现了org.apache.tools.ant.BuildLogger 接口。
-listener classname为Ant 声明一个监听类,并增加到其监听者列表中。在Ant与IDE或其他Java程序集成时,此选项非常有用。可以阅读第六章以了解有关监听者的更多信息。必须将所指定的监听类编写为可以处理Ant 的构建消息接发。
-buildfile filename指定Ant 需要处理的构建文件。默认的构建文件为build.xml。
-Dproperty=value在命令行上定义一个特性名-值对。
-find filename指定Ant 应当处理的构建文件。与-buildfile 选项不同,如果所指定文件在当前目录中未找到,-find 就要求Ant 在其父目录中再进行搜索。这种搜索会继续在其祖先目录中进行,直至达到文件系统的根为止,在此如果文件还未找到,则构建失败。
-atuoproxyjdk1.5以上的可以使用代理设置
-nouserlib运行ant时不使用用户lib中的jar包
-nice设计主线程优先级
-logfile使用指定的log日志
-noinput不允许交互输入
-keep-going, -k执行不依赖于所有目标
-propertyfile加载所有属性配置文件 -d 属性文件优先

Ant基本元素

​ project:必须有且只有一个,作为最外层元素

​ target:构建文件执行基本单位,代表一个独立任务,一个xml文件可以有多个

​ depens:依赖的任务,被依赖的任务先执行

Eclipse集成Ant

Ant元素解析

project

​ name:指定元素名称

​ default:执行默认执行的target

​ basedir:基本路径,如未设置,则使用构建文件的父目录为基本路径,basedir="."

target

​ name:指定target名称,project中唯一,可直接设置target名称来执行某个target

​ depends:target间依赖关系。target多个时,以"."为间隔,从左至右执行

​ if:验证指定属性是否存在,如存在,则执行;反之亦然

​ unless:验证指定属性是否不存在,如不存在,则执行;反之亦然

​ description:描述信息

property

​ basedir:project基本路径,同project元素

​ ant.file:buildfile的绝对路径

​ ant.version:Ant版本信息

ant.project.name:指定当前project名字,值与project的name属性值一致

​ ant.java.version:JDK版本

作为target属性值使用:

 <property name="name" value="jojo" />	//定义
 <echo message="name: ${name}" />		//使用

copy

​ file:需要复制的文件

​ tofile:复制的目标文件名

​ todir:复制的目标目录名

​ overwrite:设置为false(默认)时,要求被复制的文件比目标文件新;设置为true时,为强制覆盖

将本地内容复制到远程服务器上

<sshexec host="172.17.227.186" username="root" password="feixun*123" command="service jboss stop" trust="true" />	//连接远程服务器
<scp todir="user:password@IP:/usr/local/jboss/standalone/deployment s" trust="true">	//复制文件
    <fileset dir="../build/compileDir/compileWar">
        <include name="**/*.war" />
    </fileset>
</scp>

delete

​ file:删除的文件名

​ dir:删除的目录名

<delete file="/res/image/cat.jpg"/>		//删除文件
<delete dir="/res/image"/>		//删除目录
<delete includeEmptyDirs="true"> 	//删除指定类型文件
       <fileset dir="." includes="**/*.jar"/> 
</delete>

mkdir

​ dir:创建的目录名

<mkdir dir="/home/philander/build/classes"/>

move

​ file:移动的文件名

​ tofile:移动的目标文件名

​ todir:移动的目标目录名

echo

​ message:打印的信息

​ file:存放的日志的文件名

​ append:

​ level:日志等级

<echo message="ant message" file="/logs/ant.log" append="true">
<echo message="a${line.separator}b${line.separator}c"/>	//${line.separator}类似换行符

jar

​ destfile:jar文件名

​ basedir:被归档的目录名

​ includes:别归档的文件模式

​ excludes:被排除的文件模式

​ compress:是否压缩

<jar destfile="${webRoot}/${ash_jar}" level="9" compress="true" encoding="utf-8" basedir="${dest}">
    <manifest>	//MEAT-INF 中的 MANIFEST.MF 中的文件内容
        <attribute name="Implementation-Version" value="Version: 2.2"/>
    </manifest>
</jar>

javadoc

​ sourcepath、sourcefiles 和 sourcepathref 必需指定其中一个, 否则必须提供嵌套的 sourcepath、 fileset 或者 packageset。destdir 必须指定

​ sourcepath:源文件目录,可用嵌套的sourcepath代替

​ sourcefiles:逗号分割开的文件列表,可用嵌套的source代替

​ destdir:输出文件所在目录,通常为doc/api下

​ packagenames:Java包列表,逗号分隔。可用嵌套的package代替

​ packagelist:指定一个需javadoc处理的列表的父文件夹

​ use:生成class和package的用法

​ version:生成@version的信息

​ author:生成@author的信息

​ windowtitle:生成doc的浏览窗口标题

​ header:每一页的header信息

​ footer:每一页的footer信息

​ botton:每一页的bottom信息

​ nodeprecated:不生成@deprecated的信息

常见可嵌套的参数:packageset、fileset、package、excludepackage、source、doctitle、header、footer 和 bottom

path-like接口参数:javadoc 的 sourcepath、classpath 和 bootclasspath,也就是说可以完全用嵌套的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>

environment

​ file:环境变量的文件名

​ path:环境变量绝对路径

​ value:环境变量的一个直接变量

​ key:环境变量名

​ 注意:file,path,value只能取一个,功能同property

arg

​ 可通过arg元素向其传递命令行参数,如apply、exec、java

​ values:命令参数,如单独参数值中有空格,则用此属性

​ file:参数文件名,相当于当前工作目录

​ line:多个参数列表,空隔分开

​ pathref:引用的path(使用 path 元素节点定义 path )的id

​ prefix:前缀

​ suffix:后缀

<arg value="-l -a"/>	//单个命令行变量,含空格
<arg line="-l -a"/> 	//多个命令行变量,含空格
<arg path="/dir;/dir2:\dir3"/> //单个命令行变量

javac

​ srcdir:源程序目录,相当于 javac 命令的 -sourcepath参数,srcdir也是 javac的隐式 implicit 的 FileSet,因此 srcdir 支持 FileSet 的所有特征。

​ destdir:classes文件输出目录,相当于javac命令的-d参数

​ include:被编译的文件模式

​ excludes:被排除的文件模式

​ classpath:所使用的类路径

​ debug:包含的调试信息,值为yes时,相当于javac命令的-g参数,否则相当于-g:one

​ optimize:是否使用优化,默认off,值为on时,相当于javac命令的-o参数

​ verbose:提供详细的输出信息

​ fileonerror:如编译错误,是否停止,默认为true

​ deprecation:是用来deprecation的API的源文件位置,默认off,值为on时,相当于javac命令的-deprecation参数

​ fork:使用外部JDK编译器运行javac,默认no。值为yes时,效率高,对设备要求高

<javac destdir="{build.classes.dir}"
       debug="{build.debug}"
       includeAntRuntime="yes"
       srcdir="{sirc.dir}">
       <classpath refid="compile.classpath"/>
       <include name="**/*.java"/>
</javac>

java

​ classesname:被执行的类名

​ jar:包含该类的jar文件名

​ classpath:用到的类路径

​ fork:在新的虚拟机上运行该类

​ failonerror:如编译错误,是否停止,默认为true

​ output:输出文件

​ append:追加或覆盖默认文件

<java classname="AntTest">
	<classpath>
		<pathelement path="build/classes" />
	</classpath>
</java>

filelist

​ 包含在filelist类型中的文件不一定存在

​ dir:绝对路径

​ files:文件名列表,逗号分隔

​ refid:对某处定义的一个filelist引用

fileset

​ 许多ant任务构建成了隐式的fileset,即支持所有fileset属性和嵌套元素,fileset下文件必须存在

​ dir:fileset根目录

​ casesensitive:匹配大小写,默认为true

​ defaultexcludes:是否使用默认的排除模式,默认为true

​ excludes:需要排除的文件模式列表,逗号分隔

​ excludesfile:每行包含一个排除的文件的文件名

​ includes:需要包含的文件模式列表,逗号分隔

​ includesfile:每行包括一个包含模式的文件名

patternset

​ 模式的分组。支持4个属性:includes、excludex、includexfile、excludesfile与fileset相同。还允许以下嵌套元素:include、exclude、includefile 和 excludesfile

filterset

​ 过滤器,在文件移动或复制时完成文本替换

​ begintoken:嵌套过滤器所搜索的记号,标识其开始的字符串

​ endtoken:嵌套过滤器所搜索的加号,标识其结束的字符串

​ id:过滤器的唯一标识符

​ refid:对构建文件中某处定义一个过滤器的引用

path

类路径,也可标识其他路径。用作几个属性时,路径中各项用分号或冒号分隔。

​ location:文件或目录

​ refid:对当前构建文件中的某处定义的一个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>

打包案例

待更新

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值