笔者因项目需要进行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)build\jar文件夹下生成HelloWorld.jar,cmd下运行java -jar HelloWorld.jar即可