雅虎新闻|| BBC新闻|| CNN新闻|| 美元指数|| 中国期货指数|| 股票指数|| 黄金|| 外汇|| 英汉互译|| 昭放工具
163邮箱|| 126邮箱|| 新浪邮箱|| 企业邮箱|| 21cn邮箱|| tom邮箱|| 搜狐邮箱|| hotmail邮箱|| msn邮箱|| qq邮箱

用户登录

设为主页| 淘宝铺| 加入收藏|
您的IP:3.143.116.179您的操作系统:Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
个人便签
知识库
Ant 打包web 项目

Ant是一种基于Java的build工具,有些类似于unix系统中的make命令,Ant是Apache软件基金会Jakarta目录中的一个子项目,具有跨平台性,操作简单等特点。

这里就不说这些老套的话了,大家知道就是一种build工具就可以了,具体有什么用和怎么用,我们稍后说明。

二、Ant的主要标签及数据类型

Ant构建文件是一个xml文件,一般默认命名为build.xml,如果是web project,通常把构建文件放在顶层目录下,即和src文件夹并列。

一个Ant构建文件需要定义一个唯一的项目元素(project元素),还可以定义多个目标元素(target元素),各个目标元素之间可以有一定的依赖关系,如:

<target name="compile">
<target name="deploy" depends="compile">

如上,deploy依赖于compile,即系统必须先compile完了,然后才能deploy。

下面简要介绍一下Ant的主要标签:

1、<project>标签

每个构建文件对应一个项目。<project>标签是构建文件的根标签。它可以有多个内在属性,其各个属性的含义分别如下:

(1)default表示默认的运行目标,这个属性是必须的。
(2)basedir表示项目的基准目录。
(3)name表示项目名。
(4)description表示项目的描述。

2、<target>标签

Target的常用属性如下:

(1).name表示目标名称,这个属性是必须的。
(2).depends表示依赖的目标。
(3)if表示仅当属性设置时才执行。
(4)unless 表示当属性没有设置时才执行。
(5)description表示项目的描述。
Ant的depends属性指定了target的执行顺序。 Ant会依照depends属性中target出现顺序依次执行每个target。在执行之前,首先需要执行它所依赖的target。

3、<mkdir>标签

该标签用于创建一个目录,它有一个属性dir用来指定所创建的目录名。

4、<jar>标签

该标签用来生成一个JAR文件,其属性如下:

(1)destfile表示要生成的JAR文件名。
(2)basedir表示被归档的文件名。
(3)includes表示需要归档的文件模式。
(4)exchudes表示被排除的文件模式。

5、<javac标签>

该标签用于编译一个或一组java文件,其属性如下:

(1).srcdir表示源程序的目录。
(2).destdir表示class文件的输出目录。
(3).include表示被编译的文件的模式。
(4).excludes表示被排除的文件的模式。
(5).classpath表示所使用的类路径。
(6).debug 表示包含的调试信息。
(7).optimize表示是否使用优化。
(8).verbose 表示提供详细的输出信息。
(9).fileonerror 表示当碰到错误就自动停止。

6、<java>标签

该标签用来执行编译生成的.class文件,其属性如下:

(1).classname 表示将执行的类名。
(2).jar表示包含该类的JAR文件名。
(3).classpath所表示用到的类路径。
(4).fork表示在一个新的虚拟机中运行该类。
(5).failonerror表示当出现错误时自动停止。
(6).output 表示输出文件。
(7).append表示追加或者覆盖默认文件。

7、<delete>标签

该标签用于删除一个文件或一组文件,其属性如下:

(1)/file表示要删除的文件。
(2).dir表示要删除的目录。
(3).includeEmptyDirs 表示指定是否要删除空目录,默认值是删除。
(4).failonerror 表示指定当碰到错误是否停止,默认值是自动停止。

8、<copy>标签

该标签用于文件或文件集的拷贝,其属性如下:

(1).file 表示源文件。
(2).tofile 表示目标文件。
(3).todir 表示目标目录。
(4).overwrite 表示指定是否覆盖目标文件,默认值是不覆盖。
(5).includeEmptyDirs 表示制定是否拷贝空目录,默认值为拷贝。
(6).failonerror 表示指定如目标没有发现是否自动停止,默认值是停止。

如果我们部署一个web应用的话,经常用到的标签有:delete,mkdir,copy,jar,target和project。

build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="test" basedir="." default="dist">
<!-- set properties name -->
<property name="build.dir" value="./build" />
<property name="package.dir" value="./build/package" />
<property name="src.dir" value="src" />
<property name="webRoot.dir" value="WebRoot" />

<property name="web-inf.dir" value="./WEB-INF" />
<property name="classes.dir" value="./WEB-INF/classes" />

<property name="tomcat.webapps" value="D:\Program Files\apache-tomcat-6.0.26\webapps" />

<path id="classpath">
<fileset dir="${webRoot.dir}/WEB-INF/lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="${build.dir}/WEB-INF/classes"/>
</path>

<target name="clean">
<delete dir="${build.dir}" />
</target>

<target name="init">
<mkdir dir="${build.dir}" />
<mkdir dir="${build.dir}/${web-inf.dir}" />
<mkdir dir="${build.dir}/${classes.dir}" />
</target>

<target name="compile">
<javac srcdir="${src.dir}" destdir="${build.dir}/${classes.dir}" classpathref="classpath" />

<copy todir="${build.dir}/${classes.dir}">
<fileset dir="${src.dir}">
<include name="**/*.xml"/>
<include name="**/*.properties"/>
</fileset>
</copy>

<copy todir="${build.dir}">
<fileset dir="${webRoot.dir}">
<include name="**/**"/> 
</fileset>
</copy>
</target>

<target name="clean-build" depends="clean" />

<target name="main" depends="clean,init,compile" />

<target name="dist" depends="main" description="将工程打成war包">
<war destfile="${build.dir}/${ant.project.name}.war" basedir="${build.dir}" webxml="${build.dir}/${web-inf.dir}/web.xml"/>
</target>
</project>

星期日, 04/24/2011 - 01:02 — 杨超