用博客记录点滴……

java 用ant打包成jar文件

一、下载ant包,解压放放到你的项目中

二、在ant文件夹下创建一个build.xml文件,内容如下

<?xml version="1.0" encoding="GB2312" ?>
<project name="funServlet" basedir="." default="buildjar">  
    <!-- 工程目录结构
    project
        |-ant
           |-build.xml
        |-WebRoot
           |-WEB-INF
              |-lib
              |-classes
        |out
    -->
    <property name="lib.dir" value="../WebRoot/WEB-INF/lib"/>
    <property name="src.dir" value="../src"/>
    <property name="classes.dir" value="../WebRoot/WEB-INF/classes"/>
    <property name="output.dir" value="../out"/>
    <property name="jarname" value="funServlet.jar"/>
    <property name="mainclass" value="com.sun.servlet.funServlet"/><!--包名加class名称-->

    <!-- 第三方jar包的路径 -->
    <path id="lib-classpath">
        <fileset dir="${lib.dir}">
            <include name="servlet-api.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="buildjar" 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>
basedir="."  表示目录为build.xml的根目录
<property name="lib.dir" value="../WebRoot/WEB-INF/lib"/>  要引用的第三方jar包在,父目录的WebRoot/WEB-INF/lib中。
最输出的jar文件在与ant文件夹同级的out文件中包括引用的第三方jar和新生成的jar。

posted @ 2015-06-04 15:27  aegisada  阅读(2148)  评论(0编辑  收藏  举报