<?xml version="1.0" encoding="UTF-8"?>
<!-- =============================================================== -->
<!-- ANT buildfile快速参考 -->
<!-- ALin 2006-12-30 14:20 -->
<!-- =============================================================== -->
<project default="help" basedir="." name="Cabin">
<!-- project的描述,可以省略 -->
<description>Ant Buildfile参考</description>
<!-- =========================================================== -->
<!-- 项目相关的属性设置 -->
<!-- =========================================================== -->
<property environment="env"></property><!-- 引用系统环境变量 -->
<property name="app.nane" value="Cabin"></property>
<property name="app.home" value="."></property>
<property name="src.dir" value="${app.home}/src"></property>
<property name="bin.dir" value="${app.home}/bin"></property>
<property name="lib.dir" value="${app.home}/lib"></property>
<property name="build.dir" value="${app.home}/build"></property>
<property name="build.classes" value="${build.dir}/classes"/>
<property name="deploy.dir" value="${app.home}/hello"/>
<property name="deploy.classes" value="${deploy.dir}/WEB-INF/classes"/>
<property name="TOMCAT_HOME" value="C:/Tomcat 5.5"/>
<property name="Log4j.conf" value="log4j.configuration"></property>
<property name="Log4j.file" value="log4j.properties"></property>
<property name="JWSDP.HOME" value="C:/Sun/jwsdp-2.0"></property>
<property name="JAXB.HOME" value="${JWSDP.HOME}/jaxb"></property>
<property name="dtd.file1" value="datasource.dtd"></property>
<property name="dtd.file2" value="bookList.dtd"></property>
<property name="jboss.jar.dir"
value="D:/Program Files/jboss-4.0.2/client"></property>
<!-- 定义XDoclet目录,后面用到其中的Task -->
<property name="xdoclet.home" value="D:/Program Files/xdoclet-1.2.3"></property>
<!-- 引用外部属性文件 -->
<property file="db.properties"></property>
<!-- =========================================================== -->
<!-- 编译和运行的classpath -->
<!-- =========================================================== -->
<path id="compile.classpath">
<!-- The object files for this application -->
<pathelement path="${build.classes}"/>
<!-- 包括目录下的所有.jar和.zip文件 -->
<fileset dir="${TOMCAT_HOME}/common/lib"> <!-- lib的目录 -->
<include name="*.jar"/> <!-- 包括jar文件 -->
<include name="*.zip"/>
<exclude name="*.properties"/> <!-- 不包括properties文件 -->
</fileset>
<!-- 可以指定具体的某个.jar文件 -->
<fileset dir="${jboss.jar.dir}">
<include name="jbossall-client.jar"/>
<include name="jnp-client.jar"/>
</fileset>
<!-- 可以使用location代替path -->
<pathelement path="${TOMCAT_HOME}/common/classes"/>
</path>
<!-- XDoelet的lib目录 -->
<path id="xdoclet.lib.path">
<fileset dir="${xdoclet.home}/lib">
<include name="*.jar"/>
</fileset>
</path>
<!-- 定义Task,自己扩展的Ant Task也使用类似的语法进行定义 -->
<target name="define-task">
<taskdef name="documentdoclet"
classname="xdoclet.modules.doc.DocumentDocletTask"
classpathref="xdoclet.lib.path">
</taskdef>
<taskdef name="ejbdoclet"
classname="xdoclet.modules.ejb.EjbDocletTask"
classpathref="xdoclet.lib.path">
</taskdef>
<taskdef name="webdoclet"
classname="xdoclet.modules.web.WebDocletTask"
classpathref="xdoclet.lib.path" />
</target>
<!-- 创建目录,如果已经存在,则跳过 -->
<target name="prepare">
<mkdir dir="${src.dir}/META-INF"/>
<mkdir dir="${bin.dir}/META-INF"/>
<mkdir dir="${lib.dir}"/>
</target>
<!-- =========================================================== -->
<!-- target设置 -->
<!-- =========================================================== -->
<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.classes}" debug="no">
<!-- 引用上面的compile.classpath-->
<classpath refid="compile.classpath"/>
</javac>
</target>
<target name="copy" depends="compile">
<!-- 把${src.dir}下面的properties文件复制到${deploy.classes} -->
<copy todir="${deploy.classes}">
<fileset file="${src.dir}/*.properties"/>
</copy>
<!-- 复制指定文件 -->
<copy todir="${deploy.home}">
<fileset file="${build.classes}/${app.name}.jar"/>
</copy>
<!-- 把${build.classes}下面的文件复制到${deploy.classes},包 -->
<!-- 括.class文件,不包括.log文件,子目录中的文件也会复制。 -->
<copy todir="${deploy.classes}">
<fileset dir="${build.classes}">
<include name="**/*.class"/>
<exclude name="**/*.log"/>
</fileset>
</copy>
<!-- 复制具体文件,覆盖已有的文件 -->
<copy file="src/META-INF/services.xml"
tofile="${dest.dir.classes}/META-INF/services.xml"
overwrite="true"/>
</target>
<!-- 使用JDK的native2ascii工具执行本地化操作,转换编码。 -->
<target name="locale">
<echo>Target ----- [locale]</echo>
<exec dir="${src.dir}" executable="native2ascii" os="Windows XP">
<arg
line="-encoding GBK MessageResources_temp.properties
MessageResources_zh_CN.properties"/>
</exec>
</target>
<target name="clean">
<!-- 删除${deploy.classes}下面的所有(.class)文件-->
<delete>
<fileset dir="${deploy.classes}">
<include name="*"/> <!-- 包括所有文件 -->
<include name="*/**.class"/>
<exclude name=""/> <!-- ""表示不含任何文件 -->
</fileset>
</delete>
<!-- 删除${bin.dir}下面的.class、.xml、.properties、.log文件 -->
<delete>
<fileset dir="${bin.dir}">
<include name="**/*.class"/>
<include name="**/*.xml"/>
<include name="**/*.properties"/>
<include name="**/*.log"/>
</fileset>
</delete>
<!-- 删除指定路径的文件 -->
<delete file="${deploy.home}/${app.name}.jar"></delete>
</target>
<!-- run依赖于compile和delete -->
<!-- 类似于在${bin.dir}下面执行java events.EventManager,只有 -->
<!-- fork="YES"的情况下,dir属性才有效,使用classpathref引用前面 -->
<!-- 的compile.classpath。 -->
<!-- arg表示提供参数。运行方式:ant run -Daction=value -->
<!-- 其效果等同于:java events.EventManager value -->
<!-- 只不过不再需要用-cp指定classpath,非常方便。 -->
<target name="run" depends="compile, clean">
<java classname="events.EventManager" fork="YES" dir="${bin.dir}"
classpathref="compile.classpath">
<classpath path="${bin.dir}"/><!-- classpath是必须的,否则会出现NoClassDefFoundError -->
<arg value="${action}"/> <!-- arg也不是必须的,1或多个 -->
</java>
</target>
<!-- 使用exec可以运行可执行文件。dir表示在某个目录下执行; -->
<!-- executable表示可执行文件的路径,如果在path变量中,则只要 -->
<!-- 可执行文件名即可,否则应该给出完整路径;os表示是什么系统; -->
<!-- 也可以通过arg提供参数。 -->
<target name="xjc">
<echo>Run xjc.bat and generate sources.</echo>
<exec dir="${src.dir}" executable="${JAXB.HOME}/bin/xjc.bat" os="Windows XP">
<arg line="-dtd ${dtd.file2}"></arg>
<!--arg value="${dtd}"></arg--><!-- DTD file as run-time argument-->
</exec>
</target>
<!-- 把${bin.dir}下面的所有文件打包成:${app.name}.aar文件,并放 -->
<!-- 置在${bin.dir}目录下。类似于在${bin.dir}目录下执行: -->
<!-- jar cvf Cabin.aar . -->
<target name="jar">
<jar basedir="${bin.dir}" destfile="${bin.dir}/${app.name}.aar">
<!-- =============================================================== -->
<!-- ANT buildfile快速参考 -->
<!-- ALin 2006-12-30 14:20 -->
<!-- =============================================================== -->
<project default="help" basedir="." name="Cabin">
<!-- project的描述,可以省略 -->
<description>Ant Buildfile参考</description>
<!-- =========================================================== -->
<!-- 项目相关的属性设置 -->
<!-- =========================================================== -->
<property environment="env"></property><!-- 引用系统环境变量 -->
<property name="app.nane" value="Cabin"></property>
<property name="app.home" value="."></property>
<property name="src.dir" value="${app.home}/src"></property>
<property name="bin.dir" value="${app.home}/bin"></property>
<property name="lib.dir" value="${app.home}/lib"></property>
<property name="build.dir" value="${app.home}/build"></property>
<property name="build.classes" value="${build.dir}/classes"/>
<property name="deploy.dir" value="${app.home}/hello"/>
<property name="deploy.classes" value="${deploy.dir}/WEB-INF/classes"/>
<property name="TOMCAT_HOME" value="C:/Tomcat 5.5"/>
<property name="Log4j.conf" value="log4j.configuration"></property>
<property name="Log4j.file" value="log4j.properties"></property>
<property name="JWSDP.HOME" value="C:/Sun/jwsdp-2.0"></property>
<property name="JAXB.HOME" value="${JWSDP.HOME}/jaxb"></property>
<property name="dtd.file1" value="datasource.dtd"></property>
<property name="dtd.file2" value="bookList.dtd"></property>
<property name="jboss.jar.dir"
value="D:/Program Files/jboss-4.0.2/client"></property>
<!-- 定义XDoclet目录,后面用到其中的Task -->
<property name="xdoclet.home" value="D:/Program Files/xdoclet-1.2.3"></property>
<!-- 引用外部属性文件 -->
<property file="db.properties"></property>
<!-- =========================================================== -->
<!-- 编译和运行的classpath -->
<!-- =========================================================== -->
<path id="compile.classpath">
<!-- The object files for this application -->
<pathelement path="${build.classes}"/>
<!-- 包括目录下的所有.jar和.zip文件 -->
<fileset dir="${TOMCAT_HOME}/common/lib"> <!-- lib的目录 -->
<include name="*.jar"/> <!-- 包括jar文件 -->
<include name="*.zip"/>
<exclude name="*.properties"/> <!-- 不包括properties文件 -->
</fileset>
<!-- 可以指定具体的某个.jar文件 -->
<fileset dir="${jboss.jar.dir}">
<include name="jbossall-client.jar"/>
<include name="jnp-client.jar"/>
</fileset>
<!-- 可以使用location代替path -->
<pathelement path="${TOMCAT_HOME}/common/classes"/>
</path>
<!-- XDoelet的lib目录 -->
<path id="xdoclet.lib.path">
<fileset dir="${xdoclet.home}/lib">
<include name="*.jar"/>
</fileset>
</path>
<!-- 定义Task,自己扩展的Ant Task也使用类似的语法进行定义 -->
<target name="define-task">
<taskdef name="documentdoclet"
classname="xdoclet.modules.doc.DocumentDocletTask"
classpathref="xdoclet.lib.path">
</taskdef>
<taskdef name="ejbdoclet"
classname="xdoclet.modules.ejb.EjbDocletTask"
classpathref="xdoclet.lib.path">
</taskdef>
<taskdef name="webdoclet"
classname="xdoclet.modules.web.WebDocletTask"
classpathref="xdoclet.lib.path" />
</target>
<!-- 创建目录,如果已经存在,则跳过 -->
<target name="prepare">
<mkdir dir="${src.dir}/META-INF"/>
<mkdir dir="${bin.dir}/META-INF"/>
<mkdir dir="${lib.dir}"/>
</target>
<!-- =========================================================== -->
<!-- target设置 -->
<!-- =========================================================== -->
<target name="compile" depends="prepare">
<javac srcdir="${src.dir}" destdir="${build.classes}" debug="no">
<!-- 引用上面的compile.classpath-->
<classpath refid="compile.classpath"/>
</javac>
</target>
<target name="copy" depends="compile">
<!-- 把${src.dir}下面的properties文件复制到${deploy.classes} -->
<copy todir="${deploy.classes}">
<fileset file="${src.dir}/*.properties"/>
</copy>
<!-- 复制指定文件 -->
<copy todir="${deploy.home}">
<fileset file="${build.classes}/${app.name}.jar"/>
</copy>
<!-- 把${build.classes}下面的文件复制到${deploy.classes},包 -->
<!-- 括.class文件,不包括.log文件,子目录中的文件也会复制。 -->
<copy todir="${deploy.classes}">
<fileset dir="${build.classes}">
<include name="**/*.class"/>
<exclude name="**/*.log"/>
</fileset>
</copy>
<!-- 复制具体文件,覆盖已有的文件 -->
<copy file="src/META-INF/services.xml"
tofile="${dest.dir.classes}/META-INF/services.xml"
overwrite="true"/>
</target>
<!-- 使用JDK的native2ascii工具执行本地化操作,转换编码。 -->
<target name="locale">
<echo>Target ----- [locale]</echo>
<exec dir="${src.dir}" executable="native2ascii" os="Windows XP">
<arg
line="-encoding GBK MessageResources_temp.properties
MessageResources_zh_CN.properties"/>
</exec>
</target>
<target name="clean">
<!-- 删除${deploy.classes}下面的所有(.class)文件-->
<delete>
<fileset dir="${deploy.classes}">
<include name="*"/> <!-- 包括所有文件 -->
<include name="*/**.class"/>
<exclude name=""/> <!-- ""表示不含任何文件 -->
</fileset>
</delete>
<!-- 删除${bin.dir}下面的.class、.xml、.properties、.log文件 -->
<delete>
<fileset dir="${bin.dir}">
<include name="**/*.class"/>
<include name="**/*.xml"/>
<include name="**/*.properties"/>
<include name="**/*.log"/>
</fileset>
</delete>
<!-- 删除指定路径的文件 -->
<delete file="${deploy.home}/${app.name}.jar"></delete>
</target>
<!-- run依赖于compile和delete -->
<!-- 类似于在${bin.dir}下面执行java events.EventManager,只有 -->
<!-- fork="YES"的情况下,dir属性才有效,使用classpathref引用前面 -->
<!-- 的compile.classpath。 -->
<!-- arg表示提供参数。运行方式:ant run -Daction=value -->
<!-- 其效果等同于:java events.EventManager value -->
<!-- 只不过不再需要用-cp指定classpath,非常方便。 -->
<target name="run" depends="compile, clean">
<java classname="events.EventManager" fork="YES" dir="${bin.dir}"
classpathref="compile.classpath">
<classpath path="${bin.dir}"/><!-- classpath是必须的,否则会出现NoClassDefFoundError -->
<arg value="${action}"/> <!-- arg也不是必须的,1或多个 -->
</java>
</target>
<!-- 使用exec可以运行可执行文件。dir表示在某个目录下执行; -->
<!-- executable表示可执行文件的路径,如果在path变量中,则只要 -->
<!-- 可执行文件名即可,否则应该给出完整路径;os表示是什么系统; -->
<!-- 也可以通过arg提供参数。 -->
<target name="xjc">
<echo>Run xjc.bat and generate sources.</echo>
<exec dir="${src.dir}" executable="${JAXB.HOME}/bin/xjc.bat" os="Windows XP">
<arg line="-dtd ${dtd.file2}"></arg>
<!--arg value="${dtd}"></arg--><!-- DTD file as run-time argument-->
</exec>
</target>
<!-- 把${bin.dir}下面的所有文件打包成:${app.name}.aar文件,并放 -->
<!-- 置在${bin.dir}目录下。类似于在${bin.dir}目录下执行: -->
<!-- jar cvf Cabin.aar . -->
<target name="jar">
<jar basedir="${bin.dir}" destfile="${bin.dir}/${app.name}.aar">