读书人

(转)用Ant击jar包-在manifest中引用c

发布时间: 2012-10-27 10:42:26 作者: rapoo

(转)用Ant打jar包--在manifest中引用classpath
作者: ShrimpN 时间: 2010-08-19
来自:http://popopa.com/entry/id/c24538022776a51301277796505d0018.html



在打jar包时,往往需要在manifest文件中设置Class-Path,包含一些依赖的第三方jar包,使得以“java -jar xxx.jar”方式启动的jar包能正确找到依赖的类。

网上大多演示使用打jar包的例子都是像这样的:

<target name="jar" >

<jar destfile="${dest.jar}">

<fileset dir="${source.class}">

<include name="**/*.class"/>

</fileset>

<manifest>

<attribute name="Main-Class" value="${mianclass}"/>

<attribute name="Class-Path" value="xxxx.jar xxxx.jar xxxx.jar xxxx.jar"/>

</manifest>

</jar>

在依赖的jar包比较多的情况下,手工设置所有的jar包是非常令人崩溃而且容易出错的事情。一旦引用的外部jar包有变动,还需要到这里维护,时间一长,可能就会忘记。

经过一番查找,发现了一种配置:

<path id="classpath">

<fileset dir="${lib}" include="**/*.jar"/>

</path>

<target name="jar" depends="compile">

<pathconvert property="mf.classpath" pathsep=" ">

<path refid="classpath" />

<flattenmapper />

</pathconvert>
<jar destfile="${dest.jar}">

<fileset dir="${source.class}">

<include name="**/*.class"/>

</fileset>

<manifest>

<attribute name="Main-Class" value="${mainclass}"/>

<attribute name="Class-Path" value="${mf.classpath} "/>

</manifest>

</jar>

可以把classpath中的jar包,转换成jar Class-Path格式,终于可以不用写那一堆恼人的“xxxx.jar”了,Ant1.6.2及以上版本有效,还有一遍文章也介绍了这种方法:http://www.guydavis.ca/log/view.jsp?id=851

读书人网 >软件架构设计

热点推荐