[原]ANT学习体会

这几天在公司比较闲,所以决定学习ANT的使用,ANT(another neat tool)是一种快速构建工具,主要用于java,类似于C++的make。ANT功能很强大,但很易于使用。

你们一定很奇怪,既然说它易于使用,为什么我要学几天??呵呵~主要是学习资料不足和自己比较粗心的缘故。

下面我就先把我自己写的build.xml文件拿出来,build.xml文件是作为ANT的buildfile,运行ANT命令时,会默认查找当前目录下的这个文件。
<!--build.xml start-->

<project name="MyProject" default="dist" basedir=".">
    <description>
    simple example build file
 </description>
 <property name="src" location="src"/>
 <property name="build" location="build"/>
    <property name="dist" location="dist"/>
 <property name="myclasspath" location="WebRoot\WEB-INF\classes"/>

    <property name="lib.dir" location="E:\setup\java\jakarta-tomcat-5.0.28\common\lib"/>
 <property name="mylib.dir" location="WebRoot\WEB-INF\lib"/>

    <path id="libAndClass.path">
    <pathelement location="${build}" />
    <fileset dir="${lib.dir}" >
       <include name="**/*.jar" />
    </fileset>
       <fileset dir="${mylib.dir}" >
       <include name="**/*.jar" />
    </fileset>
 </path>

 <target name="init">
   <tstamp/>
   <mkdir dir="${build}"/>

   <echo message="-1- >> Create the class files directory successful!" />
   <echo message="[mkdir] Created dir:${build}" />
 </target>

 <target name="compile" depends="init" description="compile the source">
   <javac srcdir="${src}" destdir="${build}">
     <classpath refid="libAndClass.path" />
   </javac>

   <echo message="-2- >> Compile the java source files to the Build directiory successful!" />
   <echo message="[javac] Compiling all source files to ${build}" />
 </target>

 <target name="dist" depends="compile">
   <mkdir dir="${dist}/lib"/>
   <jar jarfile="${dist}/lib/WebComm-${DSTAMP}.jar" basedir="${build}"/>

   <echo message="-3- >> Create the the project jar file to the Dist directiory successful!" />
      <echo message="[jar] Building jar: ${build}" />
 </target>

 <target name="clean">
   <delete dir="${build}"/>
   <delete dir="${dist}"/>
 </target>

 <target name="copyto">
   <copy todir="${myclasspath}">
     <fileset dir="${build}"/>
      </copy>
 </target>

</project>

<!--build.xml end-->

这个build.xml的主要用于编译*.java文件,主要的target(一项任务)是Compile,因为编译之后还要将之打包,所以将默认target为dist:

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

=>default="dist"

basedir=".":指明工作路径为当前目录。
按照依赖关系“depends=targetname”,ANT命令会按init,compile,dist的顺序来执行这些target。后面的两个target:clean,copyto并不会执行,需要在命令行下输入:ant targetname的形式才会执行,这两个target的功能是用于删除class文件的文件夹和将这些class文件拷到WEB-INF\classes下。

现在主要讲讲最主要的target:compile,也就是编译。
在java源文件中,我们很多时候都需要要导入一些相关包,所以在用javac编译这些源文件时,需要加上classpath,因此,在用ANT来编译时我们也需要要指定这些jar文件路径,以求顺利通过编译。
我们在前面先定义好我们需要的classpath:

<path id="libAndClass.path">
    <pathelement location="${build}" />
    <fileset dir="${lib.dir}" >
       <include name="**/*.jar" />
    </fileset>
       <fileset dir="${mylib.dir}" >
       <include name="**/*.jar" />
    </fileset>
</path>
 
 id="libAndClass.path"是指定一个id以方便在target里引用。
 
 <pathelement location="${build}" />:是让生成的class类文件也作为以后编译要用到的相关类文件。
   
<fileset dir="${lib.dir}" >
  <include name="**/*.jar" />
</fileset>
是指定本工程项目的WEB-INF\lib下的jar包。

<fileset dir="${mylib.dir}" >
  <include name="**/*.jar" />
</fileset>
指定tomcat下的公共库。

完成后就直接在compile的target里引用:
<javac srcdir="${src}" destdir="${build}">
 <classpath refid="libAndClass.path" />
</javac>

注意,在这里,引用是用refid=idname方式,不然不能正常工作。我就是因为把refid误换成localtion,所以一直不能编译成功。

以上是我在学习ANT中的一些体会,并不是ANT教程,所以没有讲得很细,但看过ANT的基础知识后再看我写的这篇文章,应该就很好理解了,希望对初学者有点帮助。

你可能感兴趣的:([原]ANT学习体会)