Ant 工具的使用

来源:互联网 发布:slim nginx 编辑:程序博客网 时间:2024/06/11 06:55
 

Ant是什么?

Ant是一个构建工具,它可以帮助我们将项目开发过程中需要完成的各种步骤组织起来,通过一个简易的方式来构建整个项目。Ant究竟能做什么呢?这取决于Ant的任务(Task),Ant有哪些任务,就能完成哪些工作!一些典型的任务是:编译java源代码、运行java程序、拷贝文件或目录、将编译完成的类打包等等。

       当然,Ant是一个开放的架构,任何人,都可以按照自己的方式,添加自己的任务(Task),这需要遵守Ant的一些规范。

如何开始使用Ant?

1、  确保你的机器已经安装了JDK,确保你的path环境变量中包含有java虚拟机的运行程序,确保你的环境变量中有JAVA_HOME变量

2、  下载ant并解压

3、  设置ANT_HOME环境变量,指向ant解压根目录

4、  在path环境变量中,添加ANT_HOME\bin目录

5、  打开控制台,运行:ant

6、  如果能够运行ant(忽略这些异常:Buildfile: build.xml does not exist!),而不是出现诸如命令无法解释的错误,那么你的ant就安装成功了

Ant 的基本概念

Ant的运行,靠的是一个构建脚本,默认的名称叫build.xml,如果你在任何目录下运行ant命令,Ant将自动查找当前目录下有没有build.xml文件,如果有这个文件,就读取这个文件,并运行其中的默认target。

解释一下以上话的意思:

构建脚本

Ant根据构建脚本的描述来执行任务!构建脚本是一个xml格式的文件。最简单的构建脚本是:

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

<project name="测试脚本" default="copyfile" basedir=".">

    <target name="copyfile">

       <copy file=”d:/a.txt” todir=”c:/temp” overwrite=”true”/>

    </target>

</project>

如果把以上内容放到一个build.xml文件中,然后运行ant命令,Ant将执行拷贝文件的任务!

从这个最简单的构建脚本中,我们可以知道脚本的基本编写方法:

1、 脚本的根元素是:<project>

2、 所有的任务,必须通过一个<target>标签包围,一个<target>标签,可以包含多个任务。

3、 <copy>标签描述了一个任务,这些任务必须放到一个<target>标签的内部,Ant都可以使用哪些任务呢?请参考Ant的相关文档

4、 <project>中可以包含多个<target>,如果不指定运行哪个任务(即直接运行ant命令),那么,将使用<project>标签中指定的default属性的target。

构建脚本的命名

默认命名是build.xml,如果你的构建脚本的名称是build.xml,那么你可以直接运行ant命令,如果是其它的名称,如:mybuild.xml,那么,你的命令行应该改为:ant –f mybuild.xml。

运行特定任务?

运行:ant copyfile,将运行的是被命名为copyfile的target。

Ant的路径模式?

再看下面的ant构建脚本:

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

<project name="测试脚本" default="copyfile" basedir=".">

    <target name="copyfile">

       <copy todir=”c:/temp” overwrite=”true”>

           <fileset dir=”d:”>

              <include name=”*.txt”/>

           </fileset>

       <copy>

    </target>

</project>

有没有注意到这个文件,跟第一个文件的变化?没错,<copy>任务的file属性变了,现在是*.txt,可能你已经意识到,这个的意思是拷贝d:盘下所有的以txt为扩展名的文件到c:/temp目录中。完全正确!但是,究竟包不包含子目录下的txt文件呢?这就需要我们了解ant中的路径模式。Ant中的路径模式非常重要,很多地方都会用到,所以,我们首先来学习的就是ant的路径模式!

 

你可以查看ANT_HOME/docs/manual/dirtasks.html#patterns下的文档描述!里面有最详细的说明。

 

简单归纳一下:

 

*符号,代表0个或若干个字符。?符号,代表一个字符。

**代表一颗目录树。

 

Ant任务

Ant 有很多内置的(即你安装完ant之后就可以直接使用的任务)任务,但是也可以添加自己定义的任务。如果你编写了自己的任务,或者你要引入一些不是ant自带的任务时,我们需要使用<taskdef>标签来定义:

 

比如:

   <path id="xdoclet.task.classpath">

         <fileset dir="${xdoclet.home}/lib">

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

         </fileset>

         <fileset dir="${xdoclet.home}/plugins">

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

         </fileset>

   </path>

    <taskdef

       name="xdoclet"

       classname="org.xdoclet.ant.XDocletTask"

       classpathref="xdoclet.task.classpath"

    />

在这段文本里,包含了很多内容:

1、<path>元素,是用来定义一个路径的,通常是定义classpath,因为classpath可以包括众多的jar包,也可以包括众多的目录,所以可以使用<fileset>标签或<pathelement>等标签来定义这些路径。

2、这些标签总体上来说都是轻易便能够看懂的。无需过多的解释。那个<include>标签中的name属性,正是一个路径模式,表示包括本目录(即dir 属性定义的目录。)下的所有子目录中的jar文件。

 

定义完任务之后,就可以来使用它了,如:

 

    <target name="生成Hibernate配置文件">

       <xdoclet>

           <fileset dir="${src.dir}/com/bjsxt/oa/model">

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

           </fileset>       

           <component

              classname="org.xdoclet.plugin.hibernate.HibernateConfigPlugin"

              destdir="${src.dir}"

              version="3.0"

              hbm2ddlauto="update"

              jdbcurl="jdbc:mysql://127.0.0.1/oa_200706"

              jdbcdriver="com.mysql.jdbc.Driver"

              jdbcusername="root"

              jdbcpassword="mysql"

              dialect="org.hibernate.dialect.MySQLDialect"

              showsql="true"

           />

       </xdoclet>

    </target>

具体如何使用,请参考关于这个task的相关说明文档。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 蝴蝶的翅膀断了怎么办 培乐多彩泥干了怎么办 ps4被ban机了怎么办 塔吊离建筑物8米怎么办 手表带掉边缘皮怎么办 脸皮肤过敏痒肿怎么办 脸过敏发红发肿怎么办 皮肤过敏又红又肿怎么办 春天脸过敏发红痒怎么办 皮卡车后斗生锈怎么办 没带卸妆的东西怎么办 审车尾气过不了怎么办 违章停车条丢了怎么办 停车被城管贴条怎么办 违停告知单丢了怎么办 交通事故责任认定书不服怎么办 对交通事故认定书有异议怎么办 老婆不让我碰她怎么办 车被城管拖走了怎么办 共享汽车没油了怎么办 车被蹭了人跑了怎么办 遇见碰瓷的人怎么办 遇到老人碰瓷的怎么办 打了碰瓷的怎么办 倒车入库打晚了怎么办 上班停车费太贵怎么办 黄疸回家小孩不爱吃母乳怎么办 黄金棒开关坏了怎么办 在一家莆田系医院上班怎么办 被莆田医院骗了怎么办 痘痘红肿有脓包怎么办 换届选举候选人自动退出竞选怎么办 城管暴力执法导致老百姓受伤怎么办 领导制定方案与政策不一致怎么办 第三方支付存在的金融风险怎么办 貔貅鼻子摔坏了怎么办 貔貅鼻子磕破了怎么办 红警2游戏出错怎么办 猛犸牙上油花了怎么办 吃了细菌的食物怎么办 易拉罐罐头拉环断了怎么办