- 浏览: 156091 次
- 性别:
- 来自: 无锡
文章分类
最新评论
-
lgh1992314:
1.7public <T> List<T&g ...
Commons DbUtils 源码阅读四 -
lgh1992314:
it was too slow to call the met ...
Commons DbUtils 源码阅读四 -
lgh1992314:
toBeanList的存在位置有点变态
Commons DbUtils 源码阅读二 -
lgh1992314:
toBeanList的存在位置有点变态
Commons DbUtils 源码阅读二 -
hwwjason:
<target name="jar" ...
Apache Ant 实例介绍
在上一篇博文中简单介绍了一下Ant是如何编译和发布Java项目,对使用用的一些标签命令也没有做说明,现在该是做说明的时候了。
我们都看到了,Ant的构件文件是基于XML的,默认加载执行build.xml,project元素构成了Ant文件的根元素,Ant构件文件至少应该包含一个project元素。在每个project元素下,可以包含多个target元素,target就是Ant构件所要做的事情,现在列个简单的build.xml来加深一下对文件结构的印象:
<?xml version="1.0" encoding="UTF-8"?> <project name="helloProj"> <target name="sayHello"> <echo message="Hello,Ant!"></echo><!-- 该标签用于输出指定的文本信息--> </target> </project>
进入到指定目录antDemo,在控制台输入ant ,回车:
相信你一定看出问题了,sayHello没有输出,事实是这样的,一个project元素下有多个target,如果你不在build.xml文件中或者在命令行指定target,那么Ant怎么知道你要去执行哪一个target,所以可通过以下方法解决,project元素有一属性default,就是指定默认执行的target名;另一个方法就是命令行输入ant (指定target);我们采用第一种方式:
<?xml version="1.0" encoding="UTF-8"?> <project name="helloProj" default="sayHello"> <target name="sayHello"> <echo message="Hello,Ant!"></echo> </target> </project>
所以,在控制台输入ant,并出现了Hello,Ant!的打印信息了。
前面我们聊到了,Ant是默认加载执行build.xml,如果我们依个人喜好,没有指定这样的一个默认的build.xml文件,而是指定了build_helloProj.xml,在控制台输入肯定会出错,毫无疑问,那么怎么加载这样一个另指定的文件呢,命令行参数就需要做些少许改变了,可通过如下命令参数
ant -f build_helloProj.xml ant -file build_helloProj.xml ant -buildfile build_helloProj.xml
命令控制台输出如下信息:
更具体的命令行参数使用方法,可在控制台输入ant -help/ant -h查看,在此就不列出了。
Ant的关键元素和常用元素语义说明:
1)project:
ant构件文件的根元素,这个是必须的元素噢!它的三个属性我们都已经见到过了,分别为name、default、basedir。name属性就是指定project的名称了;default属性用于指定project默认执行的target名称;basedir属性用于指定基路径的位置,没有指定或者指定为".",则为Ant构件文件的附目标作为基准目录。看应用build_showbasedir.xml示例:
<?xml version="1.0" encoding="UTF-8"?> <project name="antElementLearnProj" default="printBaseDir" basedir="."> <target name="printBaseDir"> <echo message="The base dir is: ${basedir}"></echo> </target> </project>
结果显示如下:
2)target:
Ant的基本执行单元,它可以包含一个或多个具体的执行任务。多个target可以存在相互依赖关系(depends属性),所以,看看它的一些属性:
name属性指定target的名称,这是属性是project元素中唯一的;depends属性用于描述多个target之间的依赖关系,被依赖的先执行。比如,我们运行一个java程序之前必须先编译它,所以,我们在运行的target中指定depends依赖于编译的target。如果与多个target存在依赖关系,则要用","间隔。Ant会依照depends属性中的target出现的顺序依次执行每个target;if属性验证执行此target的成立条件;unless属性与if属性相反,验证指定属性为假时所在的target执行;description属性是对此target功能的简短描述和说明,看build_targetElement.xml示例:
<?xml version="1.0" encoding="UTF-8"?> <project name="antTargetElementLearnProj" default="target_b" basedir="."> <target name="target_a" if="ant.java.version"> <echo message="Java Version: ${ant.java.version}"/> </target> <target name="target_b" depends="target_a" unless="targetdemo" description="a depend example!"> <echo message="The base dir is: ${basedir}"/> </target> </project>
在控制台输入ant -f build_targetElement.xml,显示信息如下图所示:
我们运行的是名为target_b的target,因为它依赖于名为target_a的target,所以先执行target_a,运行Ant,java环境肯定存在,所以打印信息:Java Version:1.6。target_a执行完毕之后,接着执行名为target_b的target,targetdemo属性不存在,所以打印出当前的根目录。
3)property :
该元素说得直白些,就是一变量,project里的属性可通过property元素来设定,也可在外部引入一文件,例如build.properties(一定程度上可增加系统的维护性,一些开源项目常这么干),可通过如下方式引入:<property file="build.properties"/>。
在引用property元素时,可通过将属性名放在"${"和"}"之间,当然了,Ant本身也提供一些内置属性,另外它也能得到的系统属性列表与Java文档中的System.getProperties()方法得到的属性一致,Ant的内置属性包括basedir()、ant.file、ant.version、ant.project.name、ant.java.version,下面我们来看一个简单的property示例build_propertyElemet.xml:
<?xml version="1.0" encoding="UTF-8"?> <project name="antPropertyElementLearnProj" default="printPro" basedir="."> <property name="name" value="Kevin"/> <property name="age" value="25"/> <target name="printPro"> <echo message="The current ant version is:${ant.version}"/> <echo message="name: ${name}, age: ${age}"/> </target> </project>
在控制台上输入ant -f build_propertyElement.xml,信息输出如下图所示:
从输出信息,我们可以看到通过property元素设定了名为name和age的属性,然后在后面通过${name}和平${age}引用,当然,也包括了Ant的内置属性${ant.version}。
Ant常用的命令任务:
我们知道,在Ant中,任务是Ant工具的最小执行单位。在antDemo目录下再新建一目录antTask,在这下面,我们来看看Ant常用的任务:
1)copy任务 :该标签主要用来对文件、目录的复制,看看示例build_copyTask.xml:
<?xml version="1.0" encoding="GBK"?> <project name="copyTaskProj" default="" basedir="."> <!--单个文件复制:将上一个目标的build.xml拷贝到当前,并另命名为buildDir_copy.xml --> <copy file="../build.xml" tofile="buildDir_copy.xml"/> <!--目录复制:将上一级目录的antStudy拷贝到antStudy_copy --> <copy todir="antStudy_copy"> <fileset dir="../antStudy"/> </copy> <!--文件复制到文件夹:将buildDir_copy.xml拷贝到buildCopy文件夹内 --> <copy file="buildDir_copy.xml" todir="buildCopy"/> </project>
具体这些copy任务要做的事情,我已经做了相应的注释,前面说过,任务是Ant工具最小的执行单位,所以我们不必把copy放入target也一样可以执行,当然了,也可把相应的任务放入target标签。另外需要说明的是,copy标签的源文件必须要存在,否则会报文件找不到而导致编译不通过,输入ant参数命令,执行结果如下图所示:
执行完毕之后,我们再看本地磁盘,执行成功!
2)delete任务 :对文件或目录进行删除,看看示例代码build_delTask.xml:
<?xml version="1.0" encoding="GBK"?> <project name="delTaskProj" default="" basedir="."> <!--删除某个文件 --> <delete file="buildDir_copy.xml"/> <!--删除某个目录--> <delete dir="antStudy_copy"/> <!--删除当前所有的备份目录或空目录 --> <delete includeEmptyDirs="true"> <fileset dir="." includes="**/*.bak"/> </delete> </project>
没啥可说的,需要说明的是一些通配符的使用:
*符号代表0个或者多个字符;?符号代表一个字符;**代表当前目录及其所有子目录。
3)mkdir任务 :创建目录,看示例代码build_mkdirTask.xml:
<?xml version="1.0" encoding="GBK"?> <project name="mkdirTaskProj" default="" basedir="."> <!--创建一build目录 --> <mkdir dir="build"/> </project>
具体的运行方式以及控制台执行结果不再贴出了,有兴趣的朋友不妨在自己的机器上试试。
4)move任务 :移动文件或目录,看示例代码build_moveTask.xml:
<?xml version="1.0" encoding="GBK"?> <project name="moveTaskProj" default="" basedir="."> <!-- 移动单个文件 --> <move file="testMove.txt" tofile="justMove.txt"/> <!-- 移动单个文件到另一个目录--> <move file="testMove2.txt" todir="movedir"/> <!-- 移动某个目录到另一个目录--> <move todir="newdir"> <fileset dir="movedir"/> </move> </project>
5)echo任务 :该任务在上面我们使用它来输出信息,它还可根据日志或监控器的级别输出信息,包括message、file、append和level属性:
<?xml version="1.0" encoding="GBK"?> <project name="echoTaskProj" default="" basedir="."> <!--追加Hello,Kevin到logs目录下的system.log文件里 --> <echo message="Hello,Kevin" file="logs/system.log" append="true" /> </project>
至此,我们对Ant的一些常用命令的解析就到此结束了,当然了,Ant的标签元素肯定不止这么多,那没有文档和说明,我哪里又知道有哪些元素可用呢,所以得获取build.xml文件的*.dtd文件!为此,下面一个build_getDtd.xml或许会对你有所帮助:
<?xml version="1.0" encoding="UTF-8"?> <project name="dtdProj" default="getdtd"> <target name="getdtd"> <antstructure output="build.dtd"/> </target> </project>
这个也是我从网上搜索出来的,执行完毕之后,会在当前目录生成一个build.dtd的文件,希望会对你有所帮助。此外,此博客所涉及到的所有代码均在附件antDemo.rar 里。
- antDemo.rar (9.6 KB)
- 下载次数: 27
发表评论
-
Spring SpringMVC MyBatis MVN
2011-11-23 22:29 0突然想起用maven了,虽然早在今年上半年就有买了本书在看 ... -
Apache Lucene3.0 入门实例介绍
2011-05-24 23:02 1849咱这搞技术活儿的吧 ... -
Commons Logging 源码解析二
2011-05-18 22:52 0我们说过,Commons Loggi ... -
Commons Logging 源码解析一
2011-05-15 22:43 2052最近一段日子可真是够忙的,项目上线终于开始有回报了!一直要 ... -
Commons FileUpload 源码解析二
2011-04-14 23:03 0FileItemFactory: /** * ... -
Commons FileUpload 源码解析一
2011-04-14 20:39 0Commons FileUpload?! 哇噢~可以这样说 ... -
JExcelAPI(jxl)读写Excel应用
2011-04-04 23:51 10210这篇博文在我的草 ... -
Apache Axis 服务创建
2011-03-11 23:38 2259在Apache Axis了解一文中,已经对Apache A ... -
Apache Axis了解
2011-03-04 22:16 1454最近项目到了最最关键的时刻了,客户的试用期也快结束了,客户 ... -
Commons DbUtils源码阅读之实例及测试应用
2011-02-23 22:39 1906去年整了一Commons DbUtils的源码阅读,现如今 ... -
Apache Ant 实例介绍
2011-02-17 22:55 4431开开心心的过了个年,快快乐乐的过了个情人节!So,继续我技 ... -
Commons DbUtils 源码阅读八
2011-01-19 21:39 1814距离DbUtils组件源码七 ... -
Commons DbUtils 源码阅读七
2011-01-03 13:36 2053实际上,我们也知道官网上对ResultSet的解析示例: ... -
Commons DbUtils 源码阅读六
2010-12-24 23:27 1673DbUtils组件的核心部分已经解析完了,实际上呢,DbUt ... -
Commons DbUtils 源码阅读五
2010-12-13 21:31 5818关于DbUtils,我们深入剖析了对ResultSet解析 ... -
Commons DbUtils 源码阅读四
2010-12-03 19:51 2445在读BasicRowProcessor ... -
Commons DbUtils 源码阅读三
2010-11-29 22:26 3043前两天着实被javaeye关闭着急了一下,还好,总算开放了 ... -
Commons DbUtils 源码阅读二
2010-11-19 21:17 1866DbUtils组件的整个代码结构做了一个简单的疏导,现在来 ... -
Commons DbUtils 源码阅读一
2010-11-17 22:51 2930想起读源码了! 主要是出于这几个方面的考虑: ...
相关推荐
apache ant使用例子, 一个可以运行的hello ant的myelipse工程实例。
apache ant安装包 apache ant安装包 apache ant安装包
NULL 博文链接:https://cuics-100.iteye.com/blog/909448
apache-ant-1.6.5-bin 具体详细信息察看readme.txt
Ant 是一个 Apache 基金会下的跨平台的基于 Java 语言开发的构件工具。在我们详细了解 Apache Ant 之前, 让我们来讲解为什么构建工具是需要最先了解的。
Apache_Ant_中文手册.doc apache ant 讲解。。。
apache ant 1.10.13 版本apache ant 1.10.13 版本apache ant 1.10.13 版本apache ant 1.10.13 版本apache ant 1.10.13 版本apache ant 1.10.13 版本apache ant 1.10.13 版本apache ant 1.10.13 版本apache ant ...
Imagine that you are working on a large project. The project is a Java project and consists of many .java files. It consists of classes that are dependent on other ...see http://jakarta.apache.org/ant/.
Apache ANT的使用手册,即Apache官方Ant的Manual做成了CHM格式的文档,以备速查
apache ant 1.9.4 三个版本
Apache Ant 1.6.2.jar
apache-ant-1.9.16-bin.zip
Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。 j2sdk1.5.0_03就是老版本的jdk.现在已经出到最新的7.0了。 本书为PDF格式 谢谢支持
Apache-ANT完美详解 Apache-ANT完美详解 Apache-ANT完美详解
专业的 Apache Ant 使用指南(精装本)
Apache Ant 与Junit 对Java工程联合测试DEMO
apache-ant-1.10.12-bin.tar.gz
Apache-ant-1.9.2
apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-ant-1.7.1apache-...