正文

ant入门2008-11-08 21:34:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/wfxsky/39315.html

分享到:

1. Ant是一种基于Java的Build工具.基本特性:
(1)基于Java的实现。具有良好的跨平台性,同时可以通过增加新的Java类来扩展Ant的功能,而无需去了解不同平台上不同的脚本语言。
(2)基于XML的配置文件。Ant以XML树来描述Target/Task的关系,文件结构清晰、易读易写,并且利用XML对格式的控制来避免由于配置文件的错误造成的Build操作失败。

2. 建立工程的目录

常用目录:
(1)bin 公共的二进制文件,以及运行脚本
(2)build 临时创建的文件,如类文件等
(3)dist 目标输出文件,如生成Jar文件等。
(4)doc/javadocs 文档。
(5)lib 需要导出的Java包
(6)src 源文件
(7)web web应用

3. 编写Build文件

Build.xml 由三层标记表示,一层包一层。
第一层project,描述整个项目,也就是ant要做的事情整个过程概括。
第二层target,目标,对象,你可以理解成一个任务单元,或者任务集,因为它就是把一些任务包括到一起。
第三层task,也就是任务了,ant定义了很多任务标记,这个可以在ant的doc里面找到

下面以Tomcat 5.0环境下的一个简单应用为例看一下ant 的使用

建立目录结构:

helloapp
|- src
|- web
|---|- WEB-INF
|---|---|- classes
|---|---|- lib

lib 下放这个应用的所有需要的jar文件
src 下就是我们的原代码了
classes 是代码编译后存放的位置
web 就是我们常用的webapp的目录结构

我们要做的是:
(1)把所需的jar文件考到lib下,在web下编写jsp,html页面,在src下编写java源文件和properties文件,把web.xml,struts-config.xml,tld文件放入WEB-INF
(2)编译src下的java源文件,放入classes
(3)把src下的所有资源文件拷到classes, 把web应用打包成war文件
(4)发布应用,把war文件拷到tomcat的webapps下

具体来看一下怎么做
(1)就不用说了,看(2):

<!-- ================ build.xml ================== -->
<project name="helloapp" default="compile" basedir=".">

<target name=
"compile">
<javac srcdir=
"${basedir}/src"
destdir=
"${basedir}/web/WEB-INF/classes"
debug=
"on"
>
<!-- 定义了classpath就不用在环境变量中设置一大堆jar了 非常方font>"${basedir}/web/WEB-INF/lib">
<include name=
"*.jar"/>
</fileset>
</classpath>

</javac>
</target>

</project>

命令行下运行: ant
这里我们只定义了一个target 和一个 task, javac 是最常用的 task 了, 很明了,指定源文件地址,目的地,classpath 就可以编译了

路径经常要用,为了更方便,来加几个property:

<project name=
"helloapp" default="compile" basedir=".">

<!-- ================= Property Definitions ==================== -->
<property name=
"src.home" value="${basedir}/src" />
<property name=
"classes.home" value="${basedir}/web/WEB-INF/classes" />
<property name=
"lib.home" value="${basedir}/web/WEB-INF/lib" />

<!-- =================
"compile" Target ==================== -->
<target name=
"compile">
<javac srcdir=
"${src.home}"
destdir=
"${classes.home}"
debug=
"on"
>

<classpath>
<fileset dir=
"${lib.home}">
<include name=
"*.jar"/>
</fileset>
</classpath>

</javac>
</target>

</project>



在看第(3)步
加几个property:
<property name=
"app.name" value="helloapp" />
<property name=
"build.home" value="${basedir}/web" />


加个"build" Target
<!-- =================
"build" Target ==================== -->
<target name=
"build" depends="compile">
<copy todir=
"${classes.home}">
<fileset dir=
"${src.home}">
<include name=
"**/*.properties" />
</fileset>
</copy>

<jar jarfile=
"${app.name}.war" basedir="${build.home}" />
</target>

然后将<project name="helloapp" default="compile" basedir=".">中default改为default="build"
运行 ant 就可以看到 helloapp.war 了

剩下最后一步:发布它
加property:
<!-- 指向tomcat的webapps目录 -->
<property name=
"webapps.home" value="C:\Tomcat 5.0\webapps"/>[code]

加个
"deploy" Target[code]
<!-- =================
"deploy" Target ==================== -->
<target name=
"deploy" depends="build">
<copy todir=
"${webapps.home}">
<fileset dir=
"${basedir}">
<include name=
"${app.name}.war" />
</fileset>
</copy>
</target>

然后将<project name="helloapp" default="build" basedir=".">中default改为default="deploy"
运行 ant 就可以在 tomcat的webapps目录下看到 helloapp.war 了,启动tomcat, 运行这个应用

完整的 build.xml :
<project name=
"helloapp" default="deploy" basedir=".">

<!-- ================= Property Definitions ==================== -->
<property name=
"src.home" value="${basedir}/src" />
<property name=
"classes.home" value="${basedir}/web/WEB-INF/classes" />
<property name=
"lib.home" value="${basedir}/web/WEB-INF/lib" />

<property name=
"app.name" value="helloapp" />
<property name=
"build.home" value="${basedir}/web" />

<property name=
"webapps.home" value="C:\Tomcat 5.0\webapps"/>

<!-- =================
"compile" Target ==================== -->
<target name=
"compile">
<javac srcdir=
"${src.home}"
destdir=
"${classes.home}"
debug=
"on"
>

<classpath>
<fileset dir=
"${lib.home}">
<include name=
"*.jar"/>
</fileset>
</classpath>

</javac>
</target>


<!-- =================
"build" Target ==================== -->
<target name=
"build" depends="compile">
<copy todir=
"${classes.home}">
<fileset dir=
"${src.home}">
<include name=
"**/*.properties" />
</fileset>
</copy>

<jar jarfile=
"${app.name}.war" basedir="${build.home}" />
</target>

<!-- =================
"deploy" Target ==================== -->
<target name=
"deploy" depends="build">
<copy todir=
"${webapps.home}">
<fileset dir=
"${basedir}">
<include name=
"${app.name}.war" />
</fileset>
</copy>
</target>

</project>


执行ant 如果不带任何参数,ant 会在当前路径下找 build.xml,如找到就运行<project>的default指定的 target
也可以指定build.xml 文件和 target, 如:

ant -buildfile <build-dir>/xxx.xml targetname

阅读(1529) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册