Ant的使用

这些天刚上线一个项目,找了个机会温故一下ant的使用,也是为新手们提供一个学习ant的东西吧。

首先我会提供一个ant的模板,ant的默认文件是build.xml,我想刚开始接触web开发的新人们,也会很奇怪这个在项目根目录下的xml东西是干嘛用的。其实它就是大名鼎鼎的ant默认文件,部署和发布一个项目的最佳利器。下面就是我用的项目的一个实际应用模板:

<?xml version="1.0" encoding="UTF-8"?> <!-- name:对应工程的名字;default:需要的缺省任务(运行"ant"不指明任务时执行的任务) --> <project name="CDNManageSystem" default="dist" basedir="."> <!-- 建立目录结构 src JAVA源码编辑目录 lib jar包(类库)存放目录 bin 编译生成的class文件存放目录 dist war和javadoc存放目录 WebRoot jsp文件存放地方 config 配置文件存放地方 --> <property name="appName" value="CDNManageSystem"/> <property name="src.dir" value="src"/> <property name="lib.dir" value="WebRoot/WEB-INF/lib"/> <property name="dist.dir" value="dist"/> <property name="classes.dir" value="WebRoot/WEB-INF/classes"/> <property name="webapps.dir" value="C:/Tomcat6.0/webapps"/> <property name="webroot.dir" value="WebRoot"/> <property name="test.dir" value="testdist" /> <property name="www.dir" value="www" /> <property name="tomcat.home" value="C:/Tomcat6.0/"/> <!-- Compilation Classpath 路径设置 --> <path id="compile.classpath"> <pathelement location="${classes.dir}"/> <fileset dir="${lib.dir}" includes="**/*.jar" /> </path> <!-- Clean Target 删除先前的目录结构 --> <target name="clean" description="Delete old build and dist directories"> <delete dir="${classes.dir}"/> <delete dir="${dist.dir}/*.war"/> </target> <!-- Prepare Target 建立打包的目的目录结构 --> <target name="prepare"> <mkdir dir="${classes.dir}"/> <mkdir dir="${dist.dir}"/> <mkdir dir="${test.dir}"/> </target> <!-- Compile Target 编译代码,在这之前先由prepare建立目录结构 --> <target name="compile" depends="prepare" description="Compile java sources"> <!-- Compile java class as necessary --> <javac srcdir="${src.dir}" destdir="${classes.dir}" encoding="utf-8" debug="true" debuglevel="source,lines,vars" includeantruntime="on"> <classpath refid="compile.classpath"/> </javac> </target> <!-- Dist Target 将应用打包成线上环境使用的war--> <target name="dist" depends="clean,compile" description="create war file for the fomal envionment"> <copy todir="${classes.dir}"> <fileset dir="${www.dir}"> <exclude name="*.svn"/> <include name="**/*.xml"/> <include name="**/*.properties" /> </fileset> </copy> <jar jarfile="${dist.dir}/${appName}.war" basedir="${webroot.dir}"/> </target> <target name="testdist" depends="clean,compile" description="create war file for the test(10.5.22.99) envionment"> <copy todir="${classes.dir}"> <fileset dir="${src.dir}"> <exclude name="*.svn"/> <include name="**/*.xml"/> <include name="**/*.properties" /> </fileset> </copy> <jar jarfile="${test.dir}/${appName}.war" basedir="${webroot.dir}"/> </target> <target name="testdeploy" description="deploy test war to local tomcat"> <delete dir="${webapps.dir}/${appName}.war"/> <delete dir="${webapps.dir}/${appName}"/> <delete dir="${classes.dir}"/> <delete dir="${test.dir}"/> <mkdir dir="${classes.dir}"/> <mkdir dir="${test.dir}"/> <copy todir="${classes.dir}"> <fileset dir="${src.dir}"> <exclude name="*.svn"/> <include name="**/*.xml"/> <include name="**/*.properties" /> </fileset> </copy> <javac srcdir="${src.dir}" destdir="${classes.dir}" encoding="utf-8" debug="true" debuglevel="source,lines,vars"> <classpath refid="compile.classpath"/> </javac> <jar jarfile="${webapps.dir}/${appName}.war" basedir="${webroot.dir}"/> </target> <!--target name="test" depends="tomcat.stop,start-tomcat,testdeploy" description="deploy test war to tomcat and restart tomcat"> </target--> </project>

大家看了是不是有点害怕,其实并不用太担心,接下我就解释一下ant的关键元素以及最重要的ant的常用的方法:

1.Ant的关键元素

project:是Ant的根元素,每一个ant文件至少包含一个project元素。其中包含多个target

属性有name(项目名称),default(默认执行target名称),basedir(用于指定基路径的位置,未指定时默认为ant文件的父目录 路径)

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

target:它为ant的基本执行单元,包括一个或多个任务,特别多个target可以存在项目的依赖关系。

属性:name

depends

if

unless

description

<!-- Dist Target 将应用打包成线上环境使用的war--> <target name="dist" depends="clean,compile" description="create war file for the fomal envionment"> <copy todir="${classes.dir}"> <fileset dir="${www.dir}"> <exclude name="*.svn"/> <include name="**/*.xml"/> <include name="**/*.properties" /> </fileset> </copy> <jar jarfile="${dist.dir}/${appName}.war" basedir="${webroot.dir}"/> </target>

property:它可以看作参数和参数的定义,project的属性可以通过property来设定,如果要在外部引入某文件,例如build.properties,<property file="build.properties"/>,而且也可以作为task的属性值。

2.Ant的常用方法

在Ant文件里,每一个target都封装了要执行的功能。是ant工具的基本执行单位。

copy 任务:该任务主要是用对文件和目录的复制功能。

1)复制单个文件:<copy file="file.txt" tofile="copy.txt"/>;

2)对文件目录进行复制:

<copy todir="../newdir/dest_dir">

<fileset dir="src/src_dir"/>

</copy>

3)将文件复制到另为的目录:<copy file="file.txt" todir="../newdir/dest_dir"/>

delete 任务:该任务负责删除文件和目录

1)删除某个文件: <delete file="file.txt"/>

2)删除某个目录:<delete dir="src"/>

3)删除所有的备份目录和空目录:<delete includeEmptyDirs="true">

<fileset dir="." includes="**/*.bak"/>

</delete>

mkdir 任务:创建目录,<mkdir dir="build"/>

move 任务:移动文件或目录

1)移动单个文件: <move file="file.txt" tofile="tofile.txt"/>

2)移动单个文件到另一个目录:<move file="file.txt" todir="../newdir“/>

3)移动某个目录到另一个目录:<move todir="../newdir">

<fileset dir="build"/>

</move>

echo 任务:该任务根据日志和监控器级别输出信息。它包括:message,file,append和level四个属性

<echo message="hello,world" file="logging.log" append="true"/>

*利用ant构建和部署java工程

Ant可以代替javac java 和jar命令来执行java操作,从而轻松完成构建和部署java工程的工作。

<!-- Compile Target 编译代码,在这之前先由prepare建立目录结构 -->

<target name="compile" depends="prepare" description="Compile java sources">

<!-- Compile java class as necessary -->

<javac srcdir="${src.dir}" destdir="${classes.dir}" encoding="utf-8" debug="true" debuglevel="source,lines,vars" includeantruntime="on">

<classpath refid="compile.classpath"/>

</javac>

</target>

*使用ant的war任务来给java EE项目打包

<!-- Dist Target 将应用打包成线上环境使用的war-->

<target name="dist" depends="clean,compile" description="create war file for the fomal envionment">

<copy todir="${classes.dir}">

<fileset dir="${www.dir}">

<exclude name="*.svn"/>

<include name="**/*.xml"/>

<include name="**/*.properties" />

</fileset>

</copy>

<jar jarfile="${dist.dir}/${appName}.war" basedir="${webroot.dir}"/>

</target>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值