飞艳小屋

程序--人生--哲学___________________欢迎艳儿的加入

BlogJava 首页 新随笔 联系 聚合 管理
  52 Posts :: 175 Stories :: 107 Comments :: 0 Trackbacks

ant 使用


ant 
apache  工程的一个子工程,是一个基于 java build 工具。 ant 似于 make 工具,但没有 传统 make 工具的缺点。 传统 make 往往只能限制在某一平台上使用, ant 本身用 java 类实现 ,要构建的工程的配置文件用 xml 格式描述,可以很方便 实现 多平台 编译 , 非常适合 build 大型工程。

1.
安装配置 ant:
ant 
可以从 http://ant.apache.org ,目前最新版本 1.5.2 。下 后直接解 压缩 ,目 如下:
ant 
+-- bin // contains launcher scripts
|
+-- lib // contains Ant jars plus necessary dependencies
|
+-- docs // contains documentation
|    +-- ant2 // a brief description of ant2 requirements
|    |
|    +-- images // various logos for html documentation
|    |
|    +-- manual // Ant documentation (a must read )
|
+-- etc 

需要 置的 量:
ANT_HOME:ant
的安装目
JAVA_HOME:jdk
的安装目
PATH:
%ANT_HOME%\bin 加到 path 量,以便 于从命令行下直接运行 ant

假定 ant 装在 c:\ant   jdk d:\j2sdk1.4.0
在命令行下 行以下命令:
set ANT_HOME=c:\ant
set JAVA_HOME=D:\j2sdk1.4.0
set PATH=%PATH%;c:\ant\bin

win2000 命令提示符下工作 次都必 须进 行上面的 置,退出命令提示符后, 量的 又会恢 成原来的 子。 了避免 些麻 ,可以在   控制面板 \ \ \   置。

上述 置完成后,就可以使用 ant 了。

2.
建立工程描述文件 build.xml
ant 编译规 大的工程非常方便, 个工程都 对应 一个 build.xml 文件, 个文件包含与 个工程有 的路径信息和任 。下面是一个 build.xml 的例子:

<project name="logon" basedir="." default="dist">

<property name="dist.name" value="struts_demo"/>
<property name="src" location="src"/>
<property name="build" location="WEB-INF/classes"/>
<property name="dist" location="D:/tomcat/webapps/dist"/>

<!-- 
Build working classpath -->
<path id="project.class.path">
<pathelement path ="WEB-INF/lib/struts.jar"/>
<pathelement path ="WEB-INF/classes"/>
<pathelement path ="${classpath}"/>
</path>

<target name="init">
<tstamp/>
<!-- Create the build directory structure used by compile -->
<delete dir="${dist}"/>
</target>

<target name="compile" depends="init">
<javac srcdir="${src}" destdir="${build}">
<classpath refid="project.class.path"/>
</javac> 
</target>

<!-- Build binary distribution -->
<target name="dist" depends="compile"
description="Create binary distribution">
<mkdir dir="${dist}"/>
<war destfile="${dist}/${dist.name}.war"
webxml="WEB-INF/web.xml">
<lib dir="WEB-INF/lib"/>
<classes dir="WEB-INF/classes"/>
<fileset dir="${basedir}"/>
</war>
</target>

</project>

要构建的工程目 如下:
struts_demo
+--jsp
|
+--src
|
+--WEB-INF
|  +--classes
|  |
|  +--lib
|  |
|  +--web.xml
|
+--build.xml

build.xml 文件都包含一个 project 和至少一个 target target 包含任 元素,任 是一段可 行代 个任 元素都有一个 id 属性,以便于在文件中引用。 ant 有内置任 集可供使用,如上面文件中用到的 property javac war, 完成 置属性、 编译 和打包任 。当然如果需要的 也可以写自己的任

build.xml 的根元素是 progject, 它有三个属性 name default basedir, 其中 default 是必需的。 name 指定工程的名字, basedir 表示工程的基路径, "." 表示 build.xml 所在的路径。 default 表示默 target ,运行 ant 如果不指定 target default 指定的 target.

property
用来 置属性,一个工程可以 置很多属性,属性有名字和 ,属性 置后可以在后面引用。

<property name="dist.name" value="struts_demo"/>
置一个名字 dist.name 的属性,其 值为 struts_demo ,后面使用 ${dist.name} 引用,表示字符串 struts_demo.

<property name="src" location="src"/>
置一个名字 src 的属性,它的 是一个路径,用 location 置。如果 location 内容以 / \ D:\ C:\ 类开 始,表示 绝对 路径,否 表示相 路径,相 project 置的 basedir.

使用 path classpath 可以 的路径,后面引用 id 置的

构建工程最常用的 ant 内置任
mkdir
     建目 dir= 建的目
delete:    
除文件或文件  dir= 除的文件或文件
javac:     
编译 java 源文件, java 源文件放在 srcdir 指定的文件 中,生成的 .class 文件按照  package 组织 ,存放在 destdir 指定的文件 中。要注意源文件的目 录组织 要与 package 句相一致
war:        
web 用程序打包, destfile 指定打包后生成的文件名, webxml 指定所用的 web.xml 文件。 <fileset dir="${basedir}"/> basedir 下所有的文件也放在包中

上面的 build.xml 例子中, target 中的属性 depends 表示在 行本 target 之前必 要做的 target,
例如 dist  depends=compile, 意思是在用 dist 打包之前必 先用 compile 编译 这样 dist 首先 compile

 

 

 

 

/**********************************************************************/

description 元素和 description 属性,它们可用于提供更结构化的注释。

<property name="metal" value="beryllium"/>

 

例如,为了使用这样一个值,它是另一个属性的值的组成部分,您会将标签写为下面这样:

<property name="metal-database" value="${metal}.db"/>

定义依赖关系

<target name="preprocess" depends="init"/>

下面是 Ant jar 任务的一个简单使用例子:

<jar destfile="package.jar" basedir="classes"/>

这将创建一个名为 package.jar JAR 文件,并把 classes 目录中的所有文件添加到其中( JAR

还可以配置 tstamp 任务来设置不同的属性,应用一个当前时间之前或之后的时间偏移,或以不同

的方式格式化该字符串。所有这些都是使用一个嵌套的 format 元素来完成的,如下所示:

<tstamp>

<format property="OFFSET_TIME"

pattern="HH:mm:ss"

offset="10" unit="minute"/>

</tstamp>

上面的清单将 OFFSET_TIME 属性设置为距离当前时间 10 分钟之后的小时数、分钟数和秒数。

<mkdir dir="archive/metals/zinc"/>

<copy file="src/Test.java" tofile="src/TestCopy.java"/>

<move file="src/Test.java" tofile="src/TestCopy.java"/>

<replace file="input.txt" token="old" value="new"/>

<gzip src="output.tar" zipfile="output.tar.gz"/>

<unzip src="output.tar.gz" dest="extractDir"/>

如果我们想要使用一个模式,可以将 file 属性替换为一个 fileset 元素,如下所示:

<copy todir="archive">

<fileset dir="src">

<include name="*.java"/>

</fileset>

</copy>

fileset 默认情况下包含指定 src 目录下的所有文件,因此为了仅选择 Java 文件,我们对模式使

用一个 include 元素。类似地,我们可以对另一个模式添加一个 exclude 元素,从而潜在地排除

include 指定的匹配项。甚至可以指定多个 include exclude 元素;这样将得到一组文件和目录,

它们包含 include 模式的所有匹配项的并集,但排除了 exclude 模式的所有匹配项。

下面是一个文件集的例子,它仅选择那些大于 512 字节并且包含字符串“ hello ”的文件。

<fileset dir="dir">

<and>

<contains text="hello"/>

<size value="512" when="more"/>

</and>

</fileset>

下面是从 CVS 知识库提取模块的一个例子生成文件:

<?xml version="1.0"?>

<project name="CVS Extract" default="extract" basedir=".">

<property name="cvsRoot" value=" :pserver:anonymous@dev.eclipse.org:/home/eclipse "/>

<target name="extract">

<cvs cvsRoot="${cvsRoot}"

package="org.eclipse.swt.examples"

dest="${basedir}"/>

</target>

</project>

 

/*************************************************************************

3. 运行 ant:
使用 ant.bat 可以直接运行 ant, 如果不 任何参数, ant 会在当前路径下搜索 build.xml 文件,如果找到,就运行 project default 指定的 target. 也可以 参数来 选择 build.xml 文件和要运行的 target

于上面的例子 , 假定 build.xml 所在的目 录为 D:\struts_demo\ , 下面三 种执 行方式效果是一 的:
    1.   cd d:\struts_demo
         ant
    2.   ant -buildfile d:\struts_demo\build.xml
    3.   ant -buildfile d:\struts_demo\build.xml    dist

如果 ant -buildfile d:\struts_demo\build.xml  compile, 则执 compile target

ant 使用和 build.xml 文件内容,在 ant manual 中有 详细 的描述。




作者的其他文章

· 源中 件介

· 中国人自己的 目! [ 了三个 ]

· JAVA 常用 的使用方法

· JDom 使用

· Ajax 》的演 讲录 音下

· 我能 为开 源做些什

· Ajax OpenDoc 放出

· Web2.0 三大特性

· 线 BLOG

· MSN 博一年,特此

more..

其他相 文章

more...

搜索

本文 关键

· "JSP" "XML" "JDK" "WAR" "JAR"

· "Tomcat" "Ant" "Struts"

· 人物:

· "Apache"

热门关键

点文章

1.       如何写出没有 bug 的程序?

2.       《分析模式》笔 之分析手段

3.       Ajax 》的演 讲录 音下

4.       神奇的 javaScript 实现 的无需服 器支持的 WIKI

5.       jcaptcha jsp 彩色 验证码

6.       如果更好的通 p2p 络观 看世界杯 .

7.       《分析模式》笔 任模式与合同模式

8.       Web2.0 三大特性

9.       类开 协议

10.   Oracle JavaOne 大会上勾勒 SOA 2.0

11.   《分析模式》笔 目模式与 观测 模式

12.   Ajax OpenDoc 放出

13.   JBoss Sun NetBeans 合作伙伴

14.   比三个 言的 虚函数与抽象函数的区

15.   世界杯与国 产开 ( )

最新文章

1.       Sun's Peder Ulander Talks with SYS-CON.TV at JavaOne 2006

2.       CowNew 源-巧用 SQL 实现 离散数据分析

3.       说说 prototype.js 的事件注册

4.       EasyJFCMS 目正式启 邀国内 好者加入 ( uml )

5.       Infragistics JSF

6.       编码讨论 --- 码问题 极解决

7.       Ajax 》的演 讲录 音下

8.       MyEclipse+WebSphere JNDI Sybase

9.       第三次 BEA UG 动讲义

10.   我能 为开 源做些什

11.   史上 程方法的

12.   Ajax OpenDoc 放出

13.   用者与被 用者的角度看 件与 设计 模式

14.   Web2.0 三大特性

15.   线 BLOG

 

posted on 2006-06-15 13:54 天外飞仙 阅读(443) 评论(0)  编辑  收藏 所属分类: 工具

只有注册用户登录后才能发表评论。


网站导航: