Ant 学习笔记(1)
介绍、下载、说明、安装
Ant 全名: Another Neat Tool ,意思是另一个清洁工具。
Ant 介绍:
ant 是构建工具,是Apache 的一个项目,是一个基于JAVA的build工具,用来编译、运行、测试JAVA
程序,构建、包装和发布任务。
Ant 优势:
* 操作方便,只需在命令行输入 ant ,它就会自动寻找 build.xml文件。
* 良好的跨平台,可以在各种平台上运行。
* 结构清晰,能让开发人员运行各种各样的任务。
Ant 下载:
http://ant.apache.org/
Ant 配置:
1.环境变量中,查找 Path 变量并选中,然后编辑,如果没有新建,,在弹出的“系统变量”对象话中设定
系统变量 Path,Path = D:\*\Apache-ant- 1.7.0\bin
2.单击“系统变量”选项卡中的新建按钮,创建 ANT_HOME=D:\*\apache-ant-1.7.0
3.在cmd命令框中输入ant 命令,即可查看 Ant 是否安装成功
注意:
ant 启动时,自动加载 build.xml 项目配置文件,如果取别的名字,使用 buildfile标记
运行 Ant ,比如: ant -buildfile gd.xml
Ant 的使用方法:
Ant 的配置运行文件是 build.xml,一般放在项目根目录下,通过运行它即可完成相应工作。
Ant 能完成的工作:
init ,初始化工作,即在进行打包、部置之前对环境进行一些初始化工作。
compile,编译工作,即将java代码编译成class;
javadoc,生成文档,即用来生成API的相关文档;
jar,打包工作,即用来将编译后的class文件打成jar;
deploy,部署工作,即用来对打好的jar或war进行部署;
clean,清除工作,即用来清空初始化的环境;
all,执行全部任务。
元素属性说明
一般来讲,一个XML文件要包含 project 和target 两个元素
1.project 元素的属性:
name:表示一个工程的名字.
default:每个project都包含一个或多个target,一个target又包含一系列想要执行的task,
当Ant 开始运行时,开发人员可以选择target执行.如果没有 target 被指定执行时,默认的任务
将执行.
basedir:当前工程的基本路径,"."表示当前工程的根目录.
2.一个project有一系列的property,property类似于全局变量,包含name和value两个属性.
name:变量名称.
value:变量值.
属性该问的方法:${property-name};
3.Ant 内置的属性
basedir:工程的路径.
ant.file:build文件的路径.
ant.version:版本.
ant.project.name:工程名.
ant.java.version:jvm版本.
4.target 元素的属性
name:指定目录名称.
depends:指定所依赖的target.
if:条件,如果不满足条件则不执行.
unless:条件,如果不满足条件则不执行.
description:对target 的描述.
task:一小段的任务.
reference:引用,通过refid属性来引用在其他节中定义的ID.
ant 的基本语法介绍:
1.ant 命令行,最常用的命令分析如下:
//应用 build.xml 作为默认的脚本文件,目录路径默认。
ant
//应用 test.xml 作为默认的脚本文件,目录路径默认。
ant -builefile test.xml
// 应用 test.xml 作为默认的脚本文件,目录路径设置为 dist
ant -builefile test.xml dist
//应用test.xml 作为默认的脚本文件,目标路径设置为 dist ,并且把构建的属性文件放在
buile/classes 下
ant -buildfile test.xml -Dbuile=buile/classes dist
//执行从/home/ant/extras 添加的任务和jar 包
ant -lib /home/ant/extras
想了解更多的命令,可以运行 ant -H获取命令列表。
2.添加属性文件
<property file="${basedir}/build.properties" />
3.CLASSPATH设置,示例如下:
<path id="classpath">
<pathelement path="${hibernate_jar}"/> //从什么地方加载
<fileset dir="${lib.dir}"> //设置文件夹
<include name="**/*.jar" /> //将.jar 放在dir中
</filest>
</path>
以上代码与设置 CLASSPATH=/***/*.jar;/***/*.jar;是等效的
4.文件COPY命令,示例代码如下:
<!-- 拷贝源文件 -->
<copy todir="${build.src}">
<fileset dir="${src.dir}"/>
</copy>
5.打包任务jar 命令,示例代码如下
<!-- 打包文件 -->
<jar jarfil="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}" />
6.生成JAVADOC的命令,示例代码如下:
<javadoc pachagename="${[aclages}" //包名
sourcepath="${build.src}" // 源文件路径
destdir="${build.javadosc}" // 目标路径
author="true"
version="true" //是否带有版本信息
use="true" //
splitindex="true"
windowtitle="${NAME}API"
doctitle="${NAME}">
<javadoc>
7.删除命令,示例代码如下所示:
<delete dir="${dir.build}" />
ant 在线文档,地址是:http://ant.apache.org/manual/index.html
8.后台打印命令
<echo message="jdk version: 1.5.0" />
一些常用的 ant 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!-- ======================================================================
2007-10-24 上午09:01:29
project
description
yihang
====================================================================== -->
<project name="project" default="default">
<description>
转换字符
</description>
<target name="help">
<echo message=" this is help"></echo>
</target>
<!-- =================================
target: default
================================= -->
<target name="default" description="--> description">
<native2ascii dest="." includes="src/com/news/struts/*.txt" encoding="GBK" ext=".properties"></native2ascii>
</target>
</project>
元素说明:
<?xml version="1.0"?>
<!--配置myApp的Ant文件,将gd包中的内容打成jar -->
<project name="myApp" default="init" basedir=".">
<property name="myApp.home" value="." />
<property name="myApp.lib" value="${myApp.home}/WEB-INF/lib" />
<property name="myApp.jar" value="${myApp.home}/WEB-INF/lib" />
<property name="myApp.classes" value="${myApp.home}/WEB-INF/classes" />
<!--配置使用Tomcat所在的目录 -->
<property name="tomcat.home" value="D\:/apache-tomcat-6.0.2" />
<!--<property file="build.properties" />以上内容还可以定义在build.properties中-->
<target name="init">
<path id="all">
<!--初始化时需要使用的jar -->
<fileset dir="${myApp.lib}">
<include name="**/*.jar" />
</fileset>
<!--初始化时需要使用的jar -->
<fileset dir="${tomcat.home}/common/lib">
<include name="*.jar" />
</fileset>
</path>
<!--创建目录 -->
<mkdir dir="${myApp.classes}" />
</target>
<!--定义 target -->
<!--清空生成的calss -->
<target name="clean">
<!-- 删除目录 -->
<delete dir="${myApp.classes}">
</delete>
</target>
<!--定义target,该target依赖于init,编译时需要依赖与初始化的结果 -->
<target name="compile" depends="init">
<!--编译时使用的版本是1.5 -->
<javac srcdir="${myApp.home}/WEB-INF/src"encoding="utf-8" destdir="${myApp.classes}" target="1.5">
<classpath refid="all" />
</javac>
</target>
<!--定义target,该target 依赖于 compile,com.gd包下的代码打成加,命名为nancy2.0.0.jar -->
<target name="jar" depends="compile">
<jar jarfile="${myApp.jar}/nancy2.0.0.jar" basedir="${myApp.classes}" includes="com/gd/**">
</jar>
</target>
<!--将myApp项目打成war文件-->
<target name="war" depends="jar">
<war destfile="${myApp.home}/myApp.war" webxml="${myApp.home}/WEB-INF/web.xml">
<!-- 包含该文件夹下所有内容 -->
<fileset dir="${myApp.home}" casesensitive="yes">
<include name="WEB-INF/**" />
<exclude name="*.war" />
</fileset>
<!--所依赖的jar-->
<lib dir="${myApp.home}/WEB-INF/lib">
<include name="*.jar" />
</lib>
</war>
</target>
</project>