概述

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

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

准备工作

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







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

  1. java -jar AntJavaTest.jar

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

编写build.xml文件

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <project name="AntTest" default="copy_startup_bat" basedir="../../">
  3. <!--定义当前时间-->
  4. <tstamp>
  5. <format property="current_date" pattern="yyyy_MM_dd_HH_mm_ss" locale="en"></format>
  6. </tstamp>
  7. <!--打包存放路径-->
  8. <property name="package_dest_path" value="runtime/JavaAntTest_${current_date}"></property>
  9. <!--定义依赖jar包的路径-->
  10. <path id="depend_lib_path">
  11. <fileset dir="lib">
  12. <include name="*.jar"></include>
  13. </fileset>
  14. </path>
  15. <!--- 组装依赖jar包的路径,用于mainifest文件的Class-Path -->
  16. <pathconvert property="class_path" pathsep=" ">
  17. <mapper>
  18. <chainedmapper>
  19. <flattenmapper></flattenmapper>
  20. <globmapper from="*" to="lib/*"></globmapper>
  21. </chainedmapper>
  22. </mapper>
  23. <fileset dir="lib">
  24. <include name="*jar"></include>
  25. </fileset>
  26. </pathconvert>
  27. <!--创建打包目录-->
  28. <target name="make_package_dir">
  29. <mkdir dir="${package_dest_path}"></mkdir>
  30. </target>
  31. <target name="make_bin_dir" depends="make_package_dir">
  32. <mkdir dir="${package_dest_path}/bin"></mkdir>
  33. </target>
  34. <target name="make_bin_lib" depends="make_bin_dir">
  35. <mkdir dir="${package_dest_path}/lib"></mkdir>
  36. </target>
  37. <!-- 拷贝依赖的Jar包 -->
  38. <target name="copy_lib" depends="make_bin_lib">
  39. <copydir src="lib" dest="${package_dest_path}/lib"></copydir>
  40. </target>
  41. <!--编译生成class文件-->
  42. <target name="compile" depends="copy_lib">
  43. <javac srcdir="src" destdir="${package_dest_path}/bin" includeantruntime="on">
  44. <classpath refid="depend_lib_path"></classpath>
  45. </javac>
  46. </target>
  47. <!-- 打jar包 -->
  48. <target name="create_jar" depends="compile">
  49. <jar jarfile="${package_dest_path}/AntJavaTest.jar" basedir="${package_dest_path}/bin">
  50. <manifest>
  51. <attribute name="Main-Class" value="com.elon.StartService"></attribute>
  52. <attribute name="Class-Path" value="${class_path}"></attribute>
  53. </manifest>
  54. </jar>
  55. </target>
  56. <!--拷贝启动bat文件-->
  57. <target name="copy_startup_bat" depends="create_jar">
  58. <copy file="tools/build/startup.bat" tofile="${package_dest_path}/startup.bat"></copy>
  59. </target>
  60. </project>

测试运行

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

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

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

使用Ant打包Java后台程序的更多相关文章

  1. 使用Ant打包Web前台程序

    概述 本文通过一个简单的Web项目作为例子描述如何用ANT完成Web前台程序的打包工作.包含文件拷贝.编译.打包三部分:完成这三部就可以得到一个War了,放到Tomcat下就可以运行了. ANT的安装 ...

  2. 图解教你如何使用ANT打包java程序

    1:在eclipse中建立如下的工程 值得注意的就是build.xml文件(这个是重点后面会提到) ,其他HelloWorld中的就是一句简单的输出语句 2: 使用build打包(右键然后选择运行), ...

  3. exe4j打包java应用程序

    转载地址:http://blog.csdn.net/fog911811/article/details/6151700 第一.将应用程序导出成一个JAR文件. 1.先打包程序成一个jar.在eclip ...

  4. docker容器运行java后台程序,存到数据库的时间差一天的问题

    主要原因是docker容器中的时间用的是标准时间,不是用的宿主机的时间. 修改方法: docker run -e TZ="Asia/Shanghai" -d -p 80:80 -- ...

  5. 不会用ant打包、部署项目的工程师,不是一个好程序员(测试)

    副标题:利用ant脚本 自动构建svn增量/全量 系统程序升级包 首先请允许我这样说,作为开发或测试,你一定要具备这种本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方 ...

  6. Java应用程序的打包和发布

    Java应用程序的打包和发布 简化Java应用程序的打包和发布 发布Java应用程序时Java提供了一系列打包和发布工具,可以显著的简化发布过程 该文章提供了打包Java code的几种方法,探讨Ja ...

  7. 使用IzPack打包JAVA Web应用程序

    使用IzPack打包JAVA Web应用程序步骤如下: 这里使用IzPack-4.3.5 + launch4j-3.1.0-beta1-win32.zip(绿色版)对Web应用程序打包,打包后即可对我 ...

  8. java应用程序利用Exe4j打包exe文件

    1.      使用简介: 把java应用程序打成exe文件我们可以借助第三方软件exe4j来完成.Exe4j大家可以在网上下载,下载地址是: http://www.ej-technologies.c ...

  9. 微信小程序与Java后台通信

    一.写在前面 最近接触了小程序的开发,后端选择Java,因为小程序的代码运行在腾讯的服务器上,而我们自己编写的Java代码运行在我们自己部署的服务器上,所以一开始不是很明白小程序如何与后台进行通信的, ...

随机推荐

  1. Docker安装Nginx1.11.10+php7+MySQL

    Docker安装php-fpm 1.编辑Dockerfile FROM php:7.1.3-fpm ADD sources.list /etc/apt/sources.list RUN cp /usr ...

  2. Docker安装Jenkins

    1.下载镜像 docker pull jenkins 2.生成一个容器 docker run -d --name myjenkins -p 8081:8080 -p 50000:50000  --vo ...

  3. linux下简洁优化部署tomcat应用

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本文是自己根据公司架构部署tomcat方法整理出来的文本 修 ...

  4. Java基础(含思维导图)

    很早之前整理的Java基础的一些知识点,思维导图: 1.'别名现象' 对一个对象赋值另一个对象,会指向新的对象引用,赋值前的对象引用会由于不再被引用而被gc回收: 而基本类型则不同.基本类型存储了实际 ...

  5. appium+Python 启动app(三)登录

    我们根据前面的知识点,用uiautomatorviewer工具来获取我们当前的元素 (注:uiautomatorviewer 是 android sdk 自带的) 知识点:appium的webdriv ...

  6. 流式计算与计算抽象化------《Designing Data-Intensive Applications》读书笔记15

    上篇的内容,我们探讨了分布式计算中的MapReduce与批处理.所以本篇我们将继续探索分布式计算优化的相关细节,并且分析MapReduce与批处理的局限性,看看流式计算是否能给我们在分布式计算层面提供 ...

  7. ubuntu下boost编译安装

    ubuntu下boost编译安装 boost 安装 1.依赖安装 apt-get install mpi-default-dev libicu-dev python-dev python3-dev l ...

  8. iOS微信内存监控

    WeTest 导读 目前iOS主流的内存监控工具是Instruments的Allocations,但只能用于开发阶段.本文介绍如何实现离线化的内存监控工具,用于App上线后发现内存问题. FOOM(F ...

  9. API token for Github

    1.如图所示:(前提是登录Github,进入Personal settings) 2,创建token 3,生成token 4. Last login: Mon Dec  5 20:24:18 on c ...

  10. UVA-714 二分

    把可能的进行二分判断,判断的时候尽量向右取,一直取到不能去为止,这样才有可能成功分割. 判断是否可以把up作为最大值的代码: bool judge(LL up){ if(up < Big) re ...