2004年07月28日

 

Ant 作为一个开源的make工具,他的好处就不多说了。我下面给出一个例子,说明如何使用ant来开发和部署java程序。

<project name=”abcm” default=”deply” basedir=”.”>

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

       <property name=”build.dir” value=”D:\Tomcat 5.0\webapps\abcm\WEB-INF\classes”/>

       <property name=”lib.dir” value=”lib”/>

              <property name=”Name” value=”abcm”/>

              <property name=”version” value=”1.0″/>

              <property name=”subversion” value=”1.0″/>

       <property name=”clover.out.dir” value=”cloverout”/>

       <property name=”javadoc” value=”http://java.sun.com/j2se/1.3/docs/api”/>

       <property name=”javac.debug” value=”on”/>

       <property name=”javac.optimize” value=”off”/>

  

       <path id=”lib.class.path”>

              <fileset dir=”${lib.dir}”>

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

              </fileset>

              <pathelement path=”${clover.jar}”/>

       </path>

      <patternset id=”support.files”>

              <include name=”**/*.dtd”/>

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

              <include name=”**/*.xslt”/>

             

              <!– exclude everything we don’t want in the jar –>

              <!–<exclude name=”${build.dir}/**/*”/>

              <exclude name=”${doc.dir}/**/*”/>

              <exclude name=”classes/**/*”/>

              <exclude name=”build.xml”/>–>

              <exclude name=”**/*.properties”/>

              <exclude name=”**/*.ccf”/>

              <exclude name=”**/*.cfg.xml”/>     

              <exclude name=”net/sf/hibernate/jca/hibernate-service.xml”/>

              <exclude name=”META-INF/ra.xml”/> <!– don’t include ra.xml –>

       </patternset>

       <patternset id=”source.files”>

              <!– include everything we want in the src directory

                   that we didn’t want in the jar itself –>

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

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

              <include name=”**/*.ccf”/>

              <include name=”META-INF/ra.xml”/>

       </patternset>

 

       <target name=”deply” depends=”compile” description=”Initialize the build”>

 

              <echo message=”Copy deply xml file”/>

              <copy todir=”${build.dir}”>

                     <fileset dir=”.”>

                            <include name=”*.xml”/>

                            <exclude name=”build.xml”/>

                      <exclude name=”buildabcm.xml”/>

                     </fileset>

              </copy>

       </target>

              <target name=”compile” depends=”init” description=”Compile the Java source code”>

              <available

                     classname=”org.eclipse.core.launcher.Main”

                     property=”build.compiler”

                     value=”org.eclipse.jdt.core.JDTCompilerAdapter”

                     classpath=”${java.class.path}”/>            

              <javac

                     srcdir=”${src.dir}”

                     destdir=”${build.dir}”

                     classpathref=”lib.class.path”

                     debug=”${javac.debug}”

                     optimize=”${javac.optimize}”

                     nowarn=”on”>

              </javac>

       </target>

       <target name=”init” depends=”splash” description=”Initialize the build”>

              <tstamp>

                     <format property=”subversion” pattern=”yyyy-MM-dd hh:mm:ss”/>

              </tstamp>

              <echo message=”Build ${Name}-${version} (${subversion})”/>

              <mkdir dir=”${build.dir}”/>

              <copy todir=”${build.dir}”>

                     <fileset dir=”${src.dir}”>

                            <patternset refid=”support.files”/>

                     </fileset>

                     <fileset dir=”.”>

                            <include name=”readme.txt”/>

                            <include name=”lgpl.txt”/>

                     </fileset>

              </copy>

       </target>

       <target name=”splash” description=”Display the logo”>

              <property name=”splash.dir” location=”.”/>

              <splash imageurl=”file:${splash.dir}/abcm_log.gif” showduration=”0″/>

       </target>

</project>

 

说明:

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

…..

Property标记用来声明一些全局的变量,比如编译路径、部署路径、项目信息等等。

1、 类路径定义

       <path id=”lib.class.path”>

              <fileset dir=”${lib.dir}”>

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

              </fileset>

              <pathelement path=”${clover.jar}”/>

       </path>

上面的描述说明了java编译的classpath是什么。

 

2、 资源路径定义

      <patternset id=”support.files”>

              <include name=”**/*.dtd”/>

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

              <include name=”**/*.xslt”/>

             

              <!– exclude everything we don’t want in the jar –>

              <!–<exclude name=”${build.dir}/**/*”/>

              <exclude name=”${doc.dir}/**/*”/>

              <exclude name=”classes/**/*”/>

              <exclude name=”build.xml”/>–>

              <exclude name=”**/*.properties”/>

              <exclude name=”**/*.ccf”/>

              <exclude name=”**/*.cfg.xml”/>     

              <exclude name=”net/sf/hibernate/jca/hibernate-service.xml”/>

              <exclude name=”META-INF/ra.xml”/> <!– don’t include ra.xml –>

       </patternset>

定义所有要打包的资源文件。

3、 部署

       <target name=”deply” depends=”compile” description=”Initialize the build”>

 

              <echo message=”Copy deply xml file”/>

              <copy todir=”${build.dir}”>

                     <fileset dir=”.”>

                            <include name=”*.xml”/>

                            <exclude name=”build.xml”/>

                      <exclude name=”buildabcm.xml”/>

                     </fileset>

              </copy>

       </target>

上面的描述用来将hiberbate需要的配置文件复制到classes下。

4、 编译

              <target name=”compile” depends=”init” description=”Compile the Java source code”>

              <available

                     classname=”org.eclipse.core.launcher.Main”

                     property=”build.compiler”

                     value=”org.eclipse.jdt.core.JDTCompilerAdapter”

                     classpath=”${java.class.path}”/>            

              <javac

                     srcdir=”${src.dir}”

                     destdir=”${build.dir}”

                     classpathref=”lib.class.path”

                     debug=”${javac.debug}”

                     optimize=”${javac.optimize}”

                     nowarn=”on”>

              </javac>

       </target>

上面的描述是用来编译java 文件的。其中available一段的描述会在编译的时候显示一个splah画面默认是一只蚂蚁。