[敏捷]Ant使用笔记

二 23rd, 2011

内容摘要:
ant是一个基于JAVA的自动化脚本引擎,脚本格式为XML。除了做JAVA编译相关任务外,ANT还可以通过插件实现很多应用的调用。

1. ant介绍:

ant是构建工具,它本身就是这样一个流程脚本引擎,用于自动化调用程序完成项目的编译,打包,测试等。类似c中的make脚本,由于java与平台无关,而make脚本是平台相关的,所以我们对java语言使用ant来进行平时的编译和测试比较高效。

2. ant安装与配置

  • a.去http://ant.apache.org/bindownload.cgi 下下载最新Ant包。
  • b.解压该压缩包,在ant目录下应该有四个文件夹:bin,lib,etc,docs。
  • c.在系统可执行路径中加入指向ant的bin的路径就可以了.比如在windows图形系统下配置如下几个参数:
       新增系统变量:ANT_HOME,内容:d:\ant_home\apache-ant-1.8.0
       在PATH变量中加入:%ANT_HOME%\bin
       如果要让Ant支持junit,需要在classpath中加入junit.jar所在的目录。

3. ant使用:

  配置好ant的参数之后,我们就需要针对项目编写build.xml,如下是我在学习Agile JAVA这本书的过程中写的一个build.xml

<project name=”agileJava” default=”junit” basedir=”.”>                   
  <property name=”junitJar” value=”e:\java\junit\junit-4.9b2.jar” />                
  <property name=”src.dir” value=”${basedir}” />                     
  <property name=”build.dir” value=”${basedir}\bin” />                  
                                                                            
  <path id=”classpath”>                                                     
    <pathelement location=”${junitJar}” />                                  
    <pathelement location=”${build.dir}” />
    <pathelement location=”${basedir}” />                                  
  </path>                                                                   
                                                                            
  <target name=”init”>                                                      
    <mkdir dir=”${build.dir}” />                                            
  </target>                                                                 
                                                                            
  <target name=”build” depends=”init” description=”build all”>              
    <javac                                                                  
        srcdir=”${src.dir}” destdir=”${build.dir}”                          
        source=”1.5″                                                        
        deprecation=”on” debug=”on” optimize=”off” includes=”**”>           
      <classpath refid=”classpath” />                                       
    </javac>                                                                
  </target>                                                                 
                                                                            
  <target name=”junit” depends=”build” description=”run junitgui”>       
    <java classname=”junit.textui.TestRunner” fork=”yes”>                    
      <arg value=”sis.AllTests” />                                          
      <classpath refid=”classpath” />                                       
    </java>                                                                 
  </target>                                                                 
                                                                            
  <target name=”clean”>                                                     
    <delete dir=”${build.dir}” />                                           
  </target>                                                                 
                                                                            
   <target name=”rebuildAll” depends=”clean,build” description=”rebuild all”/>
</project>

下面,我们开始对这个build.xml做一些简单的介绍:

<project name=”agileJava” default=”junit” basedir=”.”>…</project> ,ant的所有内容都应该包含在这个标签内,name属性就是你给它取的名字,basedir是它的工作目录,default是指它默认要做的事情.
<property name=”junitJar” value=”e:\java\junit\junit-4.9b2.jar” /> ,实际上与定义变量是一个意思。
<path id=”classpath”> ,是ant常用的一个任务,用于设置classpath。
<target name=”junit” depends=”build” description=”run junitgui”>…</target>,把你想做的事情都写成一个target,它都有唯一的名字,depends是表面执行它之前需要依赖的事情,如执行junit这个target,需要先执行build。
当你完成了具有上述元素的build.xml,你就可用ant junit等命令来执行你定义的任务啦。

4. ant还能做什么?:

a.当项目分为很多的模块,每个模块都有独立的build.xml,那么我们可以利用这些build,然后将其组合到一个build.xml中。如下:

<target name=”run”>
     <ant dir=”${src1}” target=”run” />
     <ant dir=”${src2}” target=”run” />
     <ant dir=”${src3}” target=”run” />
</target>

b. 一个build.xml中重复的内容太多,导致xml的可读性很差,这个时候可以就可以将property抽取到一个新的文件中。如:
   文件all.properties:
     junitJar=”e:\java\junit\junit-4.9b2.jar”
      ……
   然后你的build.xml可以这么写: <property file=”all.properties” />

c. 但很多的build.xml中有很多重复的target,这个时候可以利用include.xml文件。

<?xml version=”1.0″ encoding=”UTF-8″ ?>
<property name=”src” value=”src”/>
<property name=”dest” value=”classes”/>
<target name=”test” >
       <ant target=”run” />
</target>

然后在每个需要的build.xml中加入如下内容:

<!–include a xml file ,it can be common propery ,can be also a target –>
<!DOCTYPE project [
<!ENTITY share-variable SYSTEM “file:../include.xml”>
]>

这样,这些build.xml就可以使用这些property和target了。

d. ant常用的任务命令: 

     参考ant 手册的ant core task.

5. 继续学习ant:

有了上面的基础,写出基本的build.xml没有多大问题了,但是项目稍微大点或者负责点,就不敢保证了,因为知道的ant命令太少了,所以,我们还是得经常学习,经常看看一些开源项目的build.xml,这就是一个积累的过程,没有任何的捷径可走。





除非注明,本站文章均为原创。本文基于 BY-NC-SA 协议进行授权,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 metaboy(包含链接).

本文链接地址: http://blog.wangyuxiong.com/archives/51077

订阅本站:http://www.wangyuxiong.com/feed

分类: 工具推荐         标签: ,
目前还没有任何评论.

无觅相关文章插件,快速提升流量