笔者因项目需要进行java程序打包,之前一直使用的最多的打包工具要数fat-jar了。此工具将所有引用的jar包以及源码生成的class一起打到一个包里面,运行程序的时候直接运行命令:java –jar jarname.jar。
fat-jar看似很方便。但是在实际运用中存在2大缺点:
1.将所有jar包都整合到一起,导致jar包太大,一般最小几百k,最大十几MB都有,上传至服务器时,耗时较长。
2.每次更新jar包,引用的包又要重新打进去。其实引用的包根本就没做更改,特别是引用的jar包较多时,打包时间较长。
通过查找网络资料,发现Ant是个不错的打包工具,特在此小试牛刀。下面以一个简单程序Hello World开始,具体操作过程记录如下,用以备忘。
HelloWorld.Java代码如下:
package com.iie.test.ant; public class HelloWorld { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Hello World"); } }
build.xml代码如下:
<?xml version="1.0" encoding="utf-8"?> <project name ="HelloWorld" default="jar" basedir="."> <target name="clean"> <delete dir="${basedir}/build"/> </target> <target name="compile" depends ="clean"> <mkdir dir ="${basedir}/build/classes"/> <javac includeantruntime="false" srcdir ="${basedir}/src" destdir ="${basedir}/build/classes"/> </target> <target name="run" depends ="compile"> <java classname ="com.iie.test.ant.HelloWorld"> <classpath> <pathelement path="${basedir}/build/classes"/> </classpath> </java> </target> <target name="jar" depends="run"> <mkdir dir="build/jar"/> <jar destfile="build/jar/HelloWorld.jar" basedir="${basedir}/build/classes"> <manifest> <attribute name="Main-class" value="com.iie.test.ant.HelloWorld"/> </manifest> </jar> </target > </project>
运行结果如下:
(1)console下出现:[java] Hello World
(2)buildjar文件夹下生成HelloWorld.jar,cmd下运行java -jar HelloWorld.jar即可