netbeans下将全部jar包打成一个,俗称fat jar
netbeans的java项目中。默认会将配置好的外部引用jar包,复制到dist文件夹的lib文件夹中去。假设须要公布出去。就须要将dist文件夹生成的jar和lib文件夹都拷贝出去公布,不方便。
有非常多办法能够将全部须要的jar合成一个,俗称fat jar。
较简单的办法是改动 build.xml文件
注意默认的build.xml里面有一些凝视,当中有一行:
-post-jar: called after JAR building 在jar编译完毕之后调用
于是在build.xml的 project节点的最后,添加一点内容:
<target name="-post-jar">
<jar destfile="./dist/终于合成的fat_jar包.jar">
<zipfileset src="./dist/lib/依赖的第三方包1.jar"/>
<zipfileset src="./dist/lib/依赖的第三方包2.jar"/>
<!-- <zipfileset src="${reference.SubProject.jar}"/> 假设依赖其它project,在此增加-->
<!--Include the main project dist jar...standard NB var-->
<zipfileset src="${dist.jar}"/>
</jar>
</target>
然后正常使用build。clean and build功能。就会在dist文件夹下生成合成的fat jar包。
可是直接这样生成的jar包,会出现一个问题:
当用java -jar xxx.jar运行时,会报:
no main manifest attribute, in xxx.jar
因为这样打jar包。丢失了manifest信息。解决的方法:
添加一些内容:在 <zipfileset src="${dist.jar}"/> 这一行以下
<manifest >
<attribute name="Main-Class" value="xxx.Xxx"/>
</manifest>
当中xxx.Xxx能够抄原生jar文件里的manifest中的Main-Class的值就可以。
又一次Clean and Build, all set.