2007年3月11日星期日

ANT使用举例


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画面默认是一只蚂蚁。

没有评论: