首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

ant学习(2)--快速开始

2012-06-30 
ant学习(二)--快速开始上次讲了ant的安装和配制,这一节主要来看一个例子来体验一下ant的魅力。?在开始例子

ant学习(二)--快速开始

上次讲了ant的安装和配制,这一节主要来看一个例子来体验一下ant的魅力。

?

在开始例子之前,首先来看一下ant安装包目录结构

?

ant   +--- README, LICENSE, fetch.xml, 其它文件. //一些提供基本信息的文件   +--- bin  //这个目录下包含了一些启动ant的bat、shell等脚本   |   +--- lib  // 包含ant 及其依赖的jar   |   +--- docs // 一些文档放在这个目录下   |      |   |      +--- images  // 文档里面的一些图片   |      |   |      +--- manual  // ant文档   |   +--- etc // 包含有各种作用的xsl文件:            //   - 创建一个各种任务输出到xml的加强报告            //   - 迁移您的构建文件和摆脱“过时”的警告            //   - ... 其它作用 ;-)

?

这一个本来应该放在第一节的。这里补充一下:)

?

?

开始我们的例子

?

设想好构架

首先在上面的ant目录下新建一个test文件夹,以保存我们的例子,(当然你也可以在其它地方,这个依个人习惯)。

在test目录下有这样一个目录结构。

?

?

?

对上面build.xml进行分析

?

<?xml version="1.0" encoding="GBK2312" ?>

这一句xml文件基本都有,需要注意的是encoding="GB2312"?这一句,如果不写或写成encoding="UTF-8",文件中有中文时会报错.

?

<project name="test" default="complie" basedir=".">

</project>

ant的所有内容必须包含在这个里边,name是你给它取的名字(任意写),basedir故名思意就是工作的根目录?.代表当前目录。default代表默认要做的任务。

?

?

<property name="src.dir" value="src"/>

<property name="build.dir" value="build"/>

<property name="build.lib" value="${build.dir}/lib"/>

<property name="build.classes" value="${build.dir}/classes"/>

?

这一堆是类似定义了java里面的变量(name是变量名,value是值),${XXX} 就是取上面定义的值。

?

?

?

?<!-- build directories -->

<target name="prepare">

<mkdir dir="${build.dir}"/> ? ? ? ? //建build文件夹

<mkdir dir="${build.lib}"/> ? ? ? ? //建lib文件夹

<mkdir dir="${build.classes}"/> //建classes文件夹

</target>

这一陀是说定义了一个任务,名叫prepare。每个任务写成一个target,<mkdir>什么的就是建了一堆文件夹

?

?

?

?

<!--javac code-->

<target name="complie" depends="prepare">

<javac srcdir="${src.dir}" destdir="${build.classes}" includeantruntime="on"/>

</target>

这里建了一个叫complie的任务,depends就是它所依赖要做的任务。比如ant执行到<target name="complie" depends="prepare">这里的时候,它发现有一个依赖,就会去判断prepare这个任务有没有被执行过,如果执行过了就直接执行complie这个任务,如果没有就执行prepare这个任务。

<javac srcdir="${src.dir}" destdir="${build.classes}" includeantruntime="on"/> 这句就是编译,javac命令应该都熟悉,srcdir是指定要编译的文件夹,destdir是指定编译后的class文件放置的文件夹。

?

?

?

?

<!--java code-->

<target name="run" depends="complie">

<java classname="Project" classpath="${build.classes}"/>

</target>

这里是运行java代码。要先做这个任务,就要先做complie。classname指定class文件,classpath指定class文件的位置。

?

?

?

?

<!-- jar code -->

<target name="jar" depends="complie">

<jar jarfile="${build.lib}/Project.jar"?

basedir="${build.classes}">?

<manifest>

<attribute name="Main-class" ?value="Project"/>

</manifest>

</jar>

</target>

打包成jar文件。jarfile指定要生成的jar(带路径),basedir指定要打包的class文件。

?

<manifest>

<attribute name="Main-class" ?value="Project"/>

</manifest>

这个是在生成的jar文件里面的MANIFEST.MF文件里面加入”Main-class: Project“这样一句话。如果不加,你打包的jar文件,在命令行运行 java -jar Project.jar 会报错。

?

?

?

<target name="clean">

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

</target>

这个就是把build文件夹删除。如果运行这个任务的话,以前构建的东东就会被删除掉,可以重新构建。可以在prepare加了这个作为依赖。

?

运行

开始-->运行-->cmd进入命令行-->进入test目录

输入ant,就会默认运行complie任务,你也可以输入ant compile 、ant clean、ant run、ant jar 单独一个。

?

结果

假设你输入了ant jar,我们来看一下,现在的test文件夹下是怎么样子的。

test     +---src      |     |      |     +---com      |              |      |              +---sample      |                        |      |                        +---Project.java      |---build      |         |      |         +---classes      |         |           |      |         |           +---Project.class      |         +---libs      |                   |      |                   +---Project.jar      |---build.xml
?

?

?

?

?

?

?

热点排行