分享

ANT Buildfile快速参考 - e

 fondofbeyond 2007-02-08
<?xml version="1.0" encoding="GBK"?>
<!-- =============================================================== -->
<!-- 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="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>
   

    <!-- =========================================================== -->
    <!-- 编译和运行的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>
   
    <!-- 创建目录,如果已经存在,则跳过                              -->
    <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>

    <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不是必须的   -->
            <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">
        </jar>
    </target>

    <target name="deploy">
    </target>

    <target name="help">
        <echo>ant copy                  Copy files.</echo>
        <echo>ant compile               Compile source files.</echo>
        <echo>ant/ant build             Build.</echo>
        <echo>ant run -Daction=store    Run client</echo>
        <echo>ant clean                 Clean.</echo>
        <echo>ant help                  Display this help message.</echo>
        <echo>${env.JBOSS_HOME}</echo><!-- 输出系统的JBOSS_HOME变量 -->
    </target>
</project>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多