ant打包到当前日期的目录下,处理src下的properties、xml文件

<!--打成ear包。ear下包括war,jar,APP-INF等-->

<!--这里的default要配置成所有target里最后执行的一个-->

<project name="ccbear" default="ear" basedir=".">

<tstamp>

<format property="today" pattern="yyyy-MM-dd"/>

</tstamp>

    <property name="app.dir" value="${basedir}" />

    <property name="src.dir" value="${app.dir}\src" />

    <property name="classes.dir" value="${app.dir}\build\classes" />

    <property name="webcontent.dir" value="${app.dir}\WebRoot" />

    <path id="build.classpath" description="编译时依赖的jar">

        <fileset dir="../ccbear/APP-INF/lib">

            <include name="*.jar" />

        </fileset>

        <pathelement location="${classes.dir}" />

    </path>

    <target name="prepare" description="创建classes文件夹">

        <mkdir dir="${classes.dir}" />

    </target>

    <target name="compile" depends="prepare" description="编绎">

        <javac srcdir="${src.dir}" destdir="${classes.dir}" fork="yes" debug="true" encoding="UTF-8" deprecation="on" optimize="off" includes="**" includeantruntime="false">

            <classpath refid="build.classpath" />

        </javac>

    <!--单独处理在src下的properties、xml文件-->

    <copy todir="${classes.dir}">

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

    <!--**表示可能存在的多层级下的文件-->

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

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

    </fileset>

    </copy>

    </target>

    

    <target name="web-war" depends="compile" description="创建WEB发布包">

        <war destfile="${app.dir}/ccbweb.war" webxml="${webcontent.dir}/WEB-INF/web.xml">

        <!--将文件里的内容打成一个war包-->

            <fileset dir="${webcontent.dir}">

            <!--**表示所有的层级-->

                <include name="**/**.*"/>

            <exclude name="**/*.jar"/>

            <exclude name="**/*.class"/>

            </fileset>

        <!-- 将lib下的jar文件拷贝到war包的对应路径下 -->

            <lib dir="../ccbear/APP-INF/lib">

            <include name="*.jar"/>

            <exclude name="tap_ejb.jar"/>

            <exclude name="ncrtpif.jar"/>

            <exclude name="struts.jar"/>

            <exclude name="ncrauth_ejb.jar"/>

            <exclude name="ant.jar"/>

            <exclude name="commons-net-1.4.1.jar"/>

            </lib>

        <!-- 将class文件拷贝到war包的对应路径下。 -->

            <classes dir="${basedir}/build/classes" />

        </war>

    </target>

<!--这里使用了相对路径,工程名不要随意变更-->

    <target name="ear" depends="web-war" description="创建WEB发布包">

        <ear destfile="${app.dir}/ccbear.ear" appxml="../ccbear/META-INF/application.xml">

            <fileset dir="../ccbear">

                <include name="APP-INF/**"/>

            </fileset>

            <fileset dir="../ccbear/APP-INF/lib" >

                <include name="engineejb.jar"/>

            </fileset>

        <fileset dir="${app.dir}" >

                <include name="ccbweb.war"/>

            </fileset>

        </ear>

    <delete>

            <fileset dir="${app.dir}">

                <include name="ccbweb.war"/>

            </fileset>

        </delete>

    <delete dir="${classes.dir}" />

    <!--按照日期新建目录-->

    <mkdir dir="build/${today}" />

    <!--将生成的ear文件拷贝到刚刚新建的目录-->

    <copy todir="build/${today}">

    <fileset dir="${basedir}" >

    <include name="ccbear.ear"/>

    </fileset>

    </copy>

    <!--删除生成的ear文件-->

    <delete>

            <fileset dir="${basedir}">

                <include name="ccbear.ear"/>

            </fileset>

        </delete>

   

    </target>

</project>

《!--针对web工程,打成的war包--》

<?xml version="1.0" encoding="UTF-8"?>

<!-- 定义一个工程,默认任务为warFile。 -->

<project name="DQC" default="warFile" basedir=".">

    

<tstamp>

<format property="today" pattern="yyyy-MM-dd"/>

</tstamp>

    <!-- 定义属性,打成war包的名称。 -->

    <property name="warFileName" value="DQC.war"></property>

<property name="build.class" value="${basedir}/build/classes"></property>

    <!-- 定义路径,编译java文件时用到的jar包。 -->

    <path id="project.lib">

        <fileset dir="${basedir}/WebRoot/WEB-INF/lib">

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

        </fileset>

    </path>

    

    <!-- 定义清空任务:清空原有的class文件,创建新的build路径。 -->

    <target name="clean">

        <delete dir="${build.class}" />

        <mkdir dir="${build.class}" />

    </target>

    

    <!-- 定义任务,编译src文件夹中的java文件,编译后的class文件放到创建的文件夹下,这里只会编译java文件,properties和xml文件要单独处理 -->

    <target name="compile" depends="clean">

    <javac fork="yes" debug="true" encoding="UTF-8" srcdir="${basedir}/src" destdir="${build.class}" includeantruntime="false">

    <classpath refid="project.lib">

            </classpath>

        </javac>

    <!--单独处理在src下的properties、xml文件-->

    <copy todir="${build.class}">

    <fileset dir="${basedir}/src" >

    <!--**表示可能存在的多层级下的文件-->

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

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

    </fileset>

    </copy>

    </target>

    

    <!-- 定义默认任务,将class文件集合成jar包。 -->

    <target name="warFile" depends="compile">

        <!-- 删除原有war包 -->

        <delete dir="${basedir}/${warFileName}" />

        <!-- 建立新war包 -->

        <war destfile="${basedir}/${warFileName}" webxml="${basedir}/WebRoot/WEB-INF/web.xml">

            <!-- 将非jar和非class文件拷贝到war包的对应路径下。 -->

        <!-- 这里需要注意的是.properties文件-->

            <fileset dir="${basedir}/WebRoot">

                <include name="**/**.*" />

                <exclude name="**/*.jar"/>

                <exclude name="**/*.class"/>

            </fileset>

            <!-- 将jar和class文件拷贝到war包的对应路径下。 -->

            <lib dir="${basedir}/WebRoot/WEB-INF/lib" />

            <classes dir="${build.class}" />

        </war>

    <!--打成war包之后去掉新建的build目录-->

    <delete dir="${build.class}" />

    <mkdir dir="build/${today}" />

    <copy todir="build/${today}">

    <fileset dir="${basedir}" >

    <include name="${warFileName}"/>

    </fileset>

    </copy>

    <delete>

            <fileset dir="${basedir}">

                <include name="${warFileName}"/>

            </fileset>

        </delete>

    </target>

    

</project>

猜你喜欢

转载自zengshaotao.iteye.com/blog/2285496