ant腳本示例

<?xml version="1.0" encoding="UTF-8"?>
<project name="testdemo" default="deploy" basedir=".">

    <!--project 目錄結構設置-->
    <property environment="env" />
    <property name="java.home" value="${env.JAVA_HOME}" />
    <property name="src.dir" value="src" />
    <property name="doc.dir" value="doc" />
    <property name="src.main" value="${src.dir}/main" />
    <property name="lib.dir" value="lib" />
    <property name="app.name" value="testdemo" />
    <!--build目錄設置-->
    <property name="build.dir" value="build" />
    <property name="build.classes" value="${build.dir}/classes" />
    <property name="build.lib" value="${build.dir}/lib" />
    <!--deploy目錄設置-->
    <property name="deploy.dir" value="deploy" />
    <property name="deploy.lib" value="${deploy.dir}/lib" />

    <!--構造打包時Class-Path需要的路徑, pathsep是分隔符 -->
    <pathconvert property="libs" pathsep=" ">
        <mapper>
            <chainedmapper>
                <flattenmapper />
                <globmapper from="*" to="lib/*" />
            </chainedmapper>
        </mapper>
        <!--按照mapper定義的格式組合lib目錄下面的所有jar文件,形成諸如lib/jar1.jar lib/jar2.jar的字符串-->
        <fileset dir="${lib.dir}">
            <include name="*.jar" />
        </fileset>
    </pathconvert>

    <!--依賴的classpath-->
    <path id="classpath">
        <fileset dir="${lib.dir}">
            <include name="*.jar" />
        </fileset>
        <fileset dir="${java.home}/lib">
            <include name="tools.jar" />
        </fileset>
    </path>

    <!--創建任務init,負責初始化一些條件-->
    <target name="init">
        <!--刪除編譯、發佈目錄-->
        <delete dir="${build.dir}" failοnerrοr="false" />
        <delete dir="${deploy.dir}" failοnerrοr="false" />
        <!--準備編譯目錄-->
        <mkdir dir="${build.dir}" />
        <mkdir dir="${build.classes}" />
        <mkdir dir="${build.lib}" />
        <!--準備發佈目錄-->
        <mkdir dir="${deploy.dir}" />
        <mkdir dir="${deploy.lib}" />
    </target>

    <!--拷貝配置文件和依賴的jar-->
    <target name="conf_lib" depends="init" description="copy conf and lib">
        <copy todir="${build.classes}">
            <fileset dir="${src.main}/resources">
                <include name="**" />
            </fileset>
        </copy>
        <!-- copy lib 文件 -->
        <copy todir="${build.lib}">
            <fileset dir="${lib.dir}/" />
        </copy>
    </target>

    <!--創建編譯任務,名字是compile,depends指定了comiple任務依賴init任務-->
    <target name="compile" depends="conf_lib" description="comile target">
        <!--編譯-->
        <javac srcdir="${src.main}/java/" destdir="${build.classes}" includeantruntime="true">
            <classpath refid="classpath" />
        </javac>
    </target>

    <!--打成jar包-->
    <target name="jar" depends="compile" description="jar taget">
        <jar destfile="${build.dir}/${app.name}.jar" >
            <manifest>
                <attribute name="Main-Class" value="com.test.Main"/>
                <attribute name="Class-Path" value="${libs}"/>
            </manifest>
            <!-- jar標籤中不指定basedir屬性,用fileset指定打包目錄,並排除某些文件不打包到jar包 -->
            <fileset dir="${build.classes}">
                <exclude name="conf/dbsetting.properties"/>
            </fileset>
        </jar>
    </target>

    <!--生成發佈部署文件-->
    <target name="deploy" depends="jar" description="deploy">
        <copy todir="${deploy.dir}/conf">
                <fileset file="${build.classes}/conf/dbsetting.properties" />
        </copy>
        <copy todir="${deploy.lib}">
            <fileset dir="${build.lib}/" />
        </copy>
        <copy todir="${deploy.dir}">
            <fileset file="${build.dir}/${app.name}.jar" />
        </copy>
    </target>

</project>
發佈了115 篇原創文章 · 獲贊 105 · 訪問量 194萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章