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画面默认是一只蚂蚁。
没有评论:
发表评论