ANT初步

http://tech.it168.com/j/2007-11-09/200711091344781_1.shtml
http://docs.huihoo.com/java/hello-ant/index.html?bcsi_scan_6E0FCBF224647A7E=0&bcsi_scan_filename=index.html

Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。
Ant的构件文件是基于XML编写的,默认名称为build.xml。ANT 关键元素包括 project, target, property, task.
------------------------------------------------------------------------------------
<?xml version="1.0"?>
<project name="projectStudy" default="SayBaseDir" basedir="E:/apache-ant">
<property file="build.properties">
<property name="name" value="amigo">
<property name="age" value="25">
<target name="SayBaseDir" if="ant.java.version">
<echo message="The base dir is:${basedir}">
<echo message="Name: ${name} Age: ${age}">
<echo message="java version:${ant.java.version}">
</echo>
</echo>
------------------------------------------------------------------------------------

在ANT工具中每一个任务封装了具体要执行的功能,是ANT工具的基本执行单位。ANT的常用任务有:

1. copy 任务

单个文件复制
<copy file="file.txt" tofile="copy.txt">

文件目录复制
<copy todir="../newdir/dest_dir">
<fileset dir="src_dir">
</fileset>

文件复制到目录
<copy file="file.txt" todir="../other/dir">

2.delete 任务
<delete file="photo/amigo.jpg">
<delte dir="photo">

<delete includeemptydirs="true">
<fileset dir="." include="**/*.bak">
</fileset>

3.mkdir 任务
<mkdir dir="build">

4. move 任务
<move file="fromfile" tofile="tofile">
<move file="fromfile" todir="movedir">

<move todir="newdir">
<fileset dir="olddir">
</fileset>

5. echo 任务
<echo message="Hello,Amigo" file="logs/system.log" append="true">


Ant可以代替使用javac、java和jar等命令来执行java操作,从而达到轻松的构建和部署Java工程的目的。

1. 利用ANT的javac任务来编译java程序
编译src目录下的所有文件,将class文件放到build/classes 中

<projectname="javactest" default="compile" basedir=".">

<targetname="clean">
<deletedir="build">
</deletedir="build">

<targetname="compile"depends="clean">
<mkdir dir="build/classes">
<javacsrcdir="src" destdir="build/classes">
</javacsrcdir="src">
</mkdir>

2. 使用Ant的java任务运行Java程序

<projectname="javatest" default="jar" basedir=".">
<target name="clean">
<delete dir="build">
</delete>

<target name="compile" depends="clean">
<mkdir dir="build/classes">
<javac srcdir="src" destdir="build/classes">
</javac>

<target name="run" depends="compile">
<java classname="HelloWorld">
<classpath>
<pathelement path="build/classes">
</pathelement>
</classpath>
</java>
</target>

3. 使用Ant的jar任务生成jar文件
<target name="jar" depends="run">
<jar destfile="helloworld.jar" basedir="build/classes">
<manifest>
<attribute name="Main-class" value="HelloWorld">
</attribute>
</manifest>
</jar>

4. 使用Ant的war任务打包J2EE Web项目
src为源代码目录,WebRoot为各 jsp存放目录,lib为工程的包目录。在antwebproject工程目录下建立了build.xml文件,该文件为该工程的Ant构件文件。读者可以src目录下放入

在前续例子中开发的HelloWorld.java文件,并在WebRoot下建立index.jsp文件,其内容很简单,就是输出 Hello信息,代码如下所示:
<%@ page language="java" contentType="text/html; charset="UTF-8" pageEncoding="UTF-8"%>
<meta equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>ant打包测试
<body>
Hello,Ant
</body>

接下来编写build.xml文件,其内容如下:

<project name="antwebproject" default="war" basedir=".">
<property name="classes" value="build/classes">
<property name="build" value="build">
<property name="lib" value="WebRoot/WEB-INF/lib">
<!-- 删除build路径-->
<target name="clean">
<delete dir="build">
</delete>
<!-- 建立build/classes路径,并编译class文件到build/classes路径下-->
<target name="compile" depends="clean">
<mkdir dir="${classes}">
<javac srcdir="src" destdir="${classes}">
</javac>
<!-- 打war包-->
<target name="war" depends="compile">
<war destfile="${build}/antwebproject.war" webxml="WebRoot/WEB-INF/web.xml">
<!-- 拷贝WebRoot下除了WEB-INF和META-INF的两个文件夹-->
<fileset dir="WebRoot" includes="**/*.jsp">
<!-- 拷贝lib目录下的jar包-->
<lib dir="${lib}">
<!-- 拷贝build/classes下的class文件-->
<classes dir="${classes}">
</classes>
</lib>
</fileset>

各target的作用在内容中已经进行说明,在此不再赘述。运行该build文件,更新目录后,可看到在build目录下生成了antwebproject.war文件,解开后可看到其目录结构如下:
--META-INF
--MANIFEST.MF
--index.jsp
--WEB-INF
--lib
--log4j-1.2.9.jar
--classes
--HelloWorld.class
--web.xml
读者可以将该war包拷贝到Tomcat的目录下看一下运行结果。

你可能感兴趣的:(ANT初步)