1. 程式人生 > >Ant編譯Java專案成jar

Ant編譯Java專案成jar

<?xml version="1.0" encoding="UTF-8"?>
<project default="jar" name="LubanEssenceSaleETL">  
    <!-- 工程目錄結構  
    project  
        |-bin  
        |-src  
        |-lib  
        |-out  
        |-build.xml  
    -->  
    <property name="lib.dir" value="lib"/>  
    <property name="src.dir" value="src"/>  
    <property name="classes.dir" value="bin"/>  
  
    <property name="output.dir" value="out"/>  
    <property name="jarname" value="LubanEssenceSaleETL.jar"/>  
    <property name="mainclass" value="com.lubansoft.essencesaleetl.Main"/>  
  
    <!-- 第三方jar包的路徑 -->  
    <path id="lib-classpath">  
        <fileset dir="${lib.dir}">  
            <include name="**/*.jar"/>  
        </fileset>  
    </path>  
  
    <!-- 1. 初始化工作,如建立目錄等 -->  
    <target name="init">  
        <mkdir dir="${classes.dir}"/>  
        <mkdir dir="${output.dir}"/>  
    </target>  
  
    <!-- 2. 編譯 -->  
    <target name="compile" depends="init">  
        <javac srcdir="${src.dir}" destdir="${classes.dir}">  
            <compilerarg line="-encoding UTF-8"/>  
            <classpath refid="lib-classpath"/>  
        </javac>  
    </target>  
  
    <!-- 3. 打包jar檔案 -->  
    <target name="jar" depends="compile">  
        <copy todir="${output.dir}/lib">  
            <fileset dir="${lib.dir}"/>  
        </copy>  
  
        <!--Create a property containing all .jar files,  
        prefix lib/, and seperated with a space-->  
        <pathconvert property="mf.classpath" pathsep=" ">  
            <mapper>  
                <chainedmapper>  
                    <!-- jar包檔案只留檔名,去掉目錄資訊 -->  
                    <flattenmapper/>  
                    <!-- add lib/ prefix -->  
                    <globmapper from="*" to="lib/*"/>  
                </chainedmapper>  
            </mapper>  
            <path refid="lib-classpath"/>  
         </pathconvert>  
  
        <!-- jar檔案的輸出路徑 -->  
        <jar destfile="${output.dir}/${jarname}" basedir="${classes.dir}">  
            <manifest>  
                <attribute name="Main-class" value="${mainclass}"/>  
                <attribute name="Class-Path" value="${mf.classpath}"/>  
            </manifest>  
        </jar>  
    </target>  
</project>