使用Ant打包Java后台程序
概述
本文通过一个简单的Java Application例子描述如何用ANT完成基本的程序打包工作。包含文件拷贝、编译、打包三部分;完成这三部就可以得到一个可运行的程序包了。
ANT的安装,环境变量的设置等省略。网上有很多文章。
准备工作
先创建一个简单的Java程序,这个程序输出简单的”Hello ANT!!!”。程序依赖于第三方Jar包GSON。基本的程序结构是这样的:
在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脚本开发完成。
为了将打包做成定时任务,还可以加一个批处理build.bat:
::启动打包程序
cd /d %cd%
start "开始打包程序..." ant
使用Ant打包Java后台程序的更多相关文章
- 使用Ant打包Web前台程序
概述 本文通过一个简单的Web项目作为例子描述如何用ANT完成Web前台程序的打包工作.包含文件拷贝.编译.打包三部分:完成这三部就可以得到一个War了,放到Tomcat下就可以运行了. ANT的安装 ...
- 图解教你如何使用ANT打包java程序
1:在eclipse中建立如下的工程 值得注意的就是build.xml文件(这个是重点后面会提到) ,其他HelloWorld中的就是一句简单的输出语句 2: 使用build打包(右键然后选择运行), ...
- exe4j打包java应用程序
转载地址:http://blog.csdn.net/fog911811/article/details/6151700 第一.将应用程序导出成一个JAR文件. 1.先打包程序成一个jar.在eclip ...
- docker容器运行java后台程序,存到数据库的时间差一天的问题
主要原因是docker容器中的时间用的是标准时间,不是用的宿主机的时间. 修改方法: docker run -e TZ="Asia/Shanghai" -d -p 80:80 -- ...
- 不会用ant打包、部署项目的工程师,不是一个好程序员(测试)
副标题:利用ant脚本 自动构建svn增量/全量 系统程序升级包 首先请允许我这样说,作为开发或测试,你一定要具备这种本领.你可以手动打包.部署你的工程,但这不是最好的方法.最好的方式就是全自动化的方 ...
- Java应用程序的打包和发布
Java应用程序的打包和发布 简化Java应用程序的打包和发布 发布Java应用程序时Java提供了一系列打包和发布工具,可以显著的简化发布过程 该文章提供了打包Java code的几种方法,探讨Ja ...
- 使用IzPack打包JAVA Web应用程序
使用IzPack打包JAVA Web应用程序步骤如下: 这里使用IzPack-4.3.5 + launch4j-3.1.0-beta1-win32.zip(绿色版)对Web应用程序打包,打包后即可对我 ...
- java应用程序利用Exe4j打包exe文件
1. 使用简介: 把java应用程序打成exe文件我们可以借助第三方软件exe4j来完成.Exe4j大家可以在网上下载,下载地址是: http://www.ej-technologies.c ...
- 微信小程序与Java后台通信
一.写在前面 最近接触了小程序的开发,后端选择Java,因为小程序的代码运行在腾讯的服务器上,而我们自己编写的Java代码运行在我们自己部署的服务器上,所以一开始不是很明白小程序如何与后台进行通信的, ...
随机推荐
- mysql中的范式与范式——读<<高性能mysql>>笔记一
对于任何给定的数据库通常都有很多表示方法,从完全的范式化到完全的反范式化,以及两者的折中.在范式化的数据库中,每个事实数据会出现并且只出现一次.相反,在反范式化的数据库中,可能会存储在多个地方. 那什 ...
- SDP(7):Cassandra- Cassandra-Engine:Streaming
akka在alpakka工具包里提供了对cassandra数据库的streaming功能.简单来讲就是用一个CQL-statement读取cassandra数据并产生akka-stream的Sourc ...
- 数组的toString方法
数组继承了object类的toString方法,数据类型将按照旧的格式打印,例如: int[] luckyNumbers = {2,3,5,7,11,13}; String s = "&qu ...
- NoSQL性能测试工具YCSB-Running a Workload
写在前面 目前,在系统设计中引入了越来越多的NoSQL产品,例如Redis/ MongoDB/ HBase等,其中性能指标往往会成为权衡不同NoSQL产品的关键因素.对这些产品在性能表现和产品选择上的 ...
- 流式计算与计算抽象化------《Designing Data-Intensive Applications》读书笔记15
上篇的内容,我们探讨了分布式计算中的MapReduce与批处理.所以本篇我们将继续探索分布式计算优化的相关细节,并且分析MapReduce与批处理的局限性,看看流式计算是否能给我们在分布式计算层面提供 ...
- c++ 回调函数使用
普通回调 #include<stdio.h> void printWelcome(int len) { printf("welcome -- %d\n", len); ...
- css y轴溢出滚动条,x轴溢出显示
这个是我工作中遇到的一个问题,困扰了我好几天,彻底理解了什么叫思路很重要. 黄色盒子里的内容是要超出出现滚动条的,红色的方块是根据另外的元素去定位的,于是呢 我就加上了 overflow-y:auto ...
- homebrew 无法安装提示不能在根目录下使用
首先提示一点:能谷歌绝对不要百度解决问题. 1.昨天百度了一天,都都没有找到解决方案.因为昨天是20161130日,我的蓝灯FQ软件的流量使用光了.悲催- 2.今天是20161201日,我可以免费使用 ...
- 多key业务,数据库水平切分架构一次搞定
数据库水平切分是一个很有意思的话题,不同业务类型,数据库水平切分的方法不同. 本篇将以"订单中心"为例,介绍"多key"类业务,随着数据量的逐步增大,数据库性能 ...
- Tomcat重定向
tomcat默认情况下不带www的域名是不会跳转到带www的域名的,而且也无法像apache那样通过配置.htaccess来实现.如果想要把不带"www'的域名重定向到带"www& ...