使用Ant打包Java后台程序

时间:2021-01-13 08:20:13

概述

本文通过一个简单的Java Application例子描述如何用ANT完成基本的程序打包工作。包含文件拷贝、编译、打包三部分;完成这三部就可以得到一个可运行的程序包了。

ANT的安装,环境变量的设置等省略。网上有很多文章。

准备工作

先创建一个简单的Java程序,这个程序输出简单的”Hello ANT!!!”。程序依赖于第三方Jar包GSON。基本的程序结构是这样的:



使用Ant打包Java后台程序



在build下编译好启动脚本startup.bat。

java -jar AntJavaTest.jar

ant脚本build.xml放到tools/build目录下,打包编译生成的软件包都放runtime下面。正式项目可以再加一个压缩处理,这里省略。

编写build.xml文件

<?xml version="1.0" encoding="utf-8" ?>
<project name="AntTest" default="copy_startup_bat" basedir="../../">

    <!--定义当前时间-->
    <tstamp>
        <format property="current_date" pattern="yyyy_MM_dd_HH_mm_ss" locale="en"></format>
    </tstamp>

    <!--打包存放路径-->
    <property name="package_dest_path" value="runtime/JavaAntTest_${current_date}"></property>

    <!--定义依赖jar包的路径-->
    <path id="depend_lib_path">
        <fileset dir="lib">
            <include name="*.jar"></include>
        </fileset>
    </path>

    <!--- 组装依赖jar包的路径,用于mainifest文件的Class-Path -->
    <pathconvert property="class_path" pathsep=" ">
        <mapper>
            <chainedmapper>
                <flattenmapper></flattenmapper>
                <globmapper from="*" to="lib/*"></globmapper>
            </chainedmapper>
        </mapper>
        <fileset dir="lib">
            <include name="*jar"></include>
        </fileset>
    </pathconvert>

    <!--创建打包目录-->
    <target name="make_package_dir">
        <mkdir dir="${package_dest_path}"></mkdir>
    </target>
    <target name="make_bin_dir" depends="make_package_dir">
        <mkdir dir="${package_dest_path}/bin"></mkdir>
    </target>
    <target name="make_bin_lib" depends="make_bin_dir">
        <mkdir dir="${package_dest_path}/lib"></mkdir>
    </target>

    <!-- 拷贝依赖的Jar包 -->
    <target name="copy_lib" depends="make_bin_lib">
        <copydir src="lib" dest="${package_dest_path}/lib"></copydir>
    </target>

    <!--编译生成class文件-->
    <target name="compile" depends="copy_lib">
        <javac srcdir="src" destdir="${package_dest_path}/bin" includeantruntime="on">
            <classpath refid="depend_lib_path"></classpath>
        </javac>
    </target>

    <!-- 打jar包 -->
    <target name="create_jar" depends="compile">
        <jar jarfile="${package_dest_path}/AntJavaTest.jar" basedir="${package_dest_path}/bin">
            <manifest>
                <attribute name="Main-Class" value="com.elon.StartService"></attribute>
                <attribute name="Class-Path" value="${class_path}"></attribute>
            </manifest>
        </jar>
    </target>

    <!--拷贝启动bat文件-->
    <target name="copy_startup_bat" depends="create_jar">
        <copy file="tools/build/startup.bat" tofile="${package_dest_path}/startup.bat"></copy>
    </target>

</project>

测试运行

将当前路径切换到tools/build目录下,执行ant命令完成打包操作。运行startup.bat, 显示”Hello ANT!!!”。一个最简单的ant脚本开发完成。

使用Ant打包Java后台程序

为了将打包做成定时任务,还可以加一个批处理build.bat:

::启动打包程序
cd /d %cd%
start "开始打包程序..." ant