📄 ant入门教程.htm
字号:
<SCRIPT src="Ant入门教程_files/show_ads.js"
type=text/javascript>
</SCRIPT>
</TD>
<TD vAlign=top width=358>
<DIV
style="TEXT-INDENT: 21pt">本内容包含了Ant的历史简要介绍,Ant的功能以及Ant框架的介绍,并对下载安装使用Ant进行了示例介绍,同时通过一个Java程序讲解了Ant的基本使用方法。<BR><BR><BR></DIV>
<DIV style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><SPAN
class=STYLE1><STRONG>1.
</STRONG><STRONG>Ant简介:这里引用Ant帮助文档中对Ant</STRONG><STRONG>的介绍:</STRONG></SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 12pt"><BR>
Apache
Ant是一个基于Java的构建工具。从理论上讲,也是一种类似于Make的工具,只是去除了Make工具的缺点。</DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 12pt"> <BR> 既然已经有了make,
gnumake, nmake,
jam以及其他的构件工具,为什么还要Ant呢?因为Ant的早期开发者发现所有以上这些工具都或多或少的有一些局限性,使得在跨平台开发软件成为困难。类似于Make的工具都是传统的基于Shell的--首先进行依赖性检查,然后执行命令。这意味着你可以轻易的通过使用或者编写程序来扩展这些工具,以满足不同的平台。当然,这也意味着你将局限于特定的平台,至少可以说局限于特定类型的平台,例如:Unix平台。<BR> <BR><BR></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 12pt"></DIV></TD></TR>
<TR>
<TD colSpan=2 height=20>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 12pt">
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 12pt"> 同时,Make文件也有一些先天的缺陷。好多人都会遇到恐怖的tab问题。Ant的最初开发者多次说“我的命令不能执行因为我在tab前面加了一个空格!”。一些工具如Jam一定程序上解决了这个问题,但仍有其它的格式问题。<BR><BR><BR></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 12pt"> Ant与从基于命令的那些扩展开来的那些工具不同,Ant是由java类扩展的。不用编写shell命令,而是配置基于XML的文件,形成多个任务的目标配置树。每一个任务都是通过一个实现了一个规定接口的java类来运行的。</DIV><BR> ant缺少了一些直接执行shell命令的能力,如find
. -name foo -exec rm
{},但它给用户提供了跨平台的能力,可以在任何地方工作。实际上,Ant也提供了命令execute用来执行shell命令,这就是它的任务,它允许执行基于操作系统的命令。<BR><BR><BR></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0cm"><SPAN
style="FONT-SIZE: 10.5pt"> </SPAN>简单的说,Ant是一个基于Java,并且主要用于Java工程的构建工具。Ant本意是Another
Neat Tool,也就是另一种整洁的工具,取首字符就是Ant。<BR><BR><BR></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0cm">构建工具就是为了减少重复工作而产生的。<BR><BR><BR></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><SPAN
style="COLOR: #0000ff"><STRONG><SPAN
style="FONT-SIZE: 10.5pt">2.
Ant的一些核心概念:</SPAN></STRONG></SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt"><SPAN
style="FONT-SIZE: 10.5pt">XML:</SPAN><SPAN
style="FONT-SIZE: 10.5pt">构建文件是以</SPAN><SPAN
style="FONT-SIZE: 10.5pt">XML</SPAN><SPAN
style="FONT-SIZE: 10.5pt">文件来描述的,采用</SPAN><SPAN
style="FONT-SIZE: 10.5pt">XML</SPAN><SPAN
style="FONT-SIZE: 10.5pt">格式有很多好处。这里就不一一列举。</SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt">陈述式语法:构建文件短小精悍,且易于理解。</DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt"><SPAN
style="FONT-SIZE: 10.5pt">每个构建文件包含一个工程</SPAN><SPAN
style="FONT-SIZE: 10.5pt">(project)</SPAN><SPAN
style="FONT-SIZE: 10.5pt">。</SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt"><SPAN
style="FONT-SIZE: 10.5pt">每个工程包含若干个目标</SPAN><SPAN
style="FONT-SIZE: 10.5pt">(target)</SPAN><SPAN
style="FONT-SIZE: 10.5pt">。</SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt"><SPAN
style="FONT-SIZE: 10.5pt">目标可以依赖于其他的目标</SPAN><SPAN
style="FONT-SIZE: 10.5pt">(depends)</SPAN><SPAN
style="FONT-SIZE: 10.5pt">。</SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt"><SPAN
style="FONT-SIZE: 10.5pt">目标包含任务</SPAN><SPAN
style="FONT-SIZE: 10.5pt">(task)</SPAN><SPAN
style="FONT-SIZE: 10.5pt">。</SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt"><SPAN
style="FONT-SIZE: 10.5pt">易于使用</SPAN><SPAN
style="FONT-SIZE: 10.5pt">Java</SPAN><SPAN
style="FONT-SIZE: 10.5pt">语言增加新的任务</SPAN><SPAN
style="FONT-SIZE: 10.5pt">---</SPAN><SPAN
style="FONT-SIZE: 10.5pt">易于扩展(自定义)。</SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><SPAN
class=STYLE1><STRONG><SPAN
style="FONT-SIZE: 10.5pt">3.
</SPAN></STRONG><STRONG><SPAN
style="FONT-SIZE: 10.5pt">Ant</SPAN></STRONG><STRONG><SPAN
style="FONT-SIZE: 10.5pt">结构:</SPAN></STRONG></SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt"><SPAN
style="FONT-SIZE: 10.5pt">Ant</SPAN><SPAN
style="FONT-SIZE: 10.5pt">的结构如下图所示:</SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; TEXT-JUSTIFY: inter-ideograph; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0cm"><BR><IMG
alt=""
src="Ant入门教程_files/1dfd5fb0860e49caa4ac48253544cb79.png"></DIV>
<DIV
style="MARGIN-TOP: 0cm; TEXT-JUSTIFY: inter-ideograph; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0cm"><SPAN
style="FONT-SIZE: 10.5pt"><BR>构建文件的概念视图:工程包含一个目标的集合。在每个目标里是任务的声明,它们是对</SPAN><SPAN
style="FONT-SIZE: 10.5pt">Ant</SPAN><SPAN
style="FONT-SIZE: 10.5pt">用于构建该目标的行为说明。目标生成一个依赖关系图表来声明该目标的依赖关系。当执行一个目标时,必须先执行它们依赖的目标。</SPAN></DIV>
<DIV
style="MARGIN-TOP: 0cm; TEXT-JUSTIFY: inter-ideograph; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0cm"> </DIV>
<DIV
style="MARGIN-TOP: 0cm; TEXT-JUSTIFY: inter-ideograph; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 0cm"><STRONG><SPAN
style="FONT-SIZE: 10.5pt"><SPAN
class=STYLE1>例子:一个典型的构建文件</SPAN>:</SPAN></STRONG></DIV>
<DIV><?xml version="1.0" ?></DIV>
<DIV><project name="OurProject"
default="deploy"></DIV>
<DIV style="TEXT-INDENT: 21pt"><target
name="init"></DIV>
<DIV style="TEXT-INDENT: 21pt"><mkdir
dir="build/classes" /></DIV>
<DIV style="TEXT-INDENT: 21pt"><mkdir dir="dist"
/></DIV>
<DIV style="TEXT-INDENT: 21pt"></target></DIV>
<DIV style="TEXT-INDENT: 21pt"><target name="compile"
depends="init" ></DIV>
<DIV style="TEXT-INDENT: 21pt"><javac srcdir="src"
destdir="build/classes"/></DIV>
<DIV style="TEXT-INDENT: 21pt"></target></DIV>
<DIV style="TEXT-INDENT: 21pt"><target name="doc"
depends="init" ></DIV>
<DIV style="TEXT-INDENT: 21pt"><javadoc
destdir="build/classes" sourcepath="src"
packagenames="org.*" /></DIV>
<DIV style="TEXT-INDENT: 21pt"></target></DIV>
<DIV style="TEXT-INDENT: 21pt"><target name="deploy"
depends="compile,doc" ></DIV>
<DIV
style="TEXT-INDENT: 21pt"> <jar
destfile="dist/project.jar" basedir="build/classes"/>
<BR>
<ftp server="<SPAN style="COLOR: red">"</SPAN>
userid="<SPAN style="COLOR: red">"</SPAN>
password="<SPAN style="COLOR: red">"></SPAN>
<DIV
style="TEXT-INDENT: 21pt"> <fileset
dir="dist"/></DIV>
<DIV style="TEXT-INDENT: 21pt"></ftp></DIV>
<DIV style="TEXT-INDENT: 21pt"></target></DIV>
<DIV></project></DIV>
<DIV> </DIV>
<DIV><STRONG>该构建过程如下:</STRONG></DIV>
<DIV>系统初始化1、编译 2、生成JAVADOC 4、打包 5、上传到FTP,其中后两步结合到一起叫部署。</DIV>
<DIV> </DIV>
<DIV>执行时输出如下:</DIV>
<DIV>> ant -propertyfile ftp.properties</DIV>
<DIV>Buildfile: build.xml</DIV>
<DIV>init:</DIV>
<DIV>[mkdir] Created dir:
/home/ant/Projects/OurProject/build/classes</DIV>
<DIV>[mkdir] Created dir:
/home/ant/Projects/OurProject/dist</DIV>
<DIV>compile:</DIV>
<DIV>[javac] Compiling 1 source file to
/home/ant/Projects/OurProject/build/</DIV>
<DIV>classes</DIV>
<DIV>doc:</DIV>
<DIV>[javadoc] Generating Javadoc</DIV>
<DIV>[javadoc] Javadoc execution</DIV>
<DIV>[javadoc] Loading source files for package
org.example.antbook.lesson1...</DIV>
<DIV>[javadoc] Constructing Javadoc information...</DIV>
<DIV>[javadoc] Building tree for all the packages and
classes...</DIV>
<DIV>[javadoc] Building index for all the packages and
classes...</DIV>
<DIV>[javadoc] Building index for all classes...</DIV>
<DIV>deploy:</DIV>
<DIV>[jar] Building jar:
/home/ant/Projects/OurProject/dist/project.jar</DIV>
<DIV>[ftp] sending files</DIV>
<DIV>[ftp] 1 files sent</DIV>
<DIV>BUILD SUCCESSFUL</DIV>
<DIV>Total time: 5 seconds.</DIV>
<DIV><BR>在执行时使用命令行参数以传入一个属性文件,属性文件中包含连接FTP服务器使用的服务器名,用户名,用户密码来给<SPAN
style="COLOR: red">特性使用。</SPAN></DIV>
<DIV>这个例子很好的展示了Ant的一些基本要素:目标依赖、特性的使用、编译、文档生成、JAR打包(tar,Zip,WAR,EAR等),最后是部署。</DIV>
<DIV> </DIV>
<DIV>Ant的简单任务(<mkdir>)都是由Java类库来实现相应的功能。而一些复杂的任务<ftp>、<junit>还需要第三方库的支持。</DIV>
<DIV> </DIV>
<DIV> Ant的一个强大之处:它总能工作。只要正确的指定构建文件,Ant就能计算出目标的依赖性,并且按照正确的顺序调用目标。目标通过任务按序执行,而任务自身处理其文件依赖性以及实际的操作来完成工作。因为每个任务通常都是在高层陈述,所以一两行XML语句经常就已经足够描述任务的内容。</DIV>
<DIV> </DIV>
<DIV style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><SPAN
class=STYLE1><STRONG>4. </STRONG><STRONG>下载并安装</STRONG><STRONG>Ant</STRONG></SPAN></DIV>
<DIV> 使用Ant前提条件,系统中已经安装JDK以及Ant。在文档编写之时,Ant的最新版本是Ant
1.7,但是为了稳定性,本文档使用版本为Ant 1.6.5.</DIV>
<DIV>首先下载Ant,到apache软件网站<A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -