其实只要在写<Jar>标签的时候加入一句话,就可以把要用到的第三方的包加入到我们目标包里面去了
<jar destfile="${output.dir}/main.jar" >
<zipgroupfileset dir="${lib.dir}" includes="*.jar" />
<fileset dir="${output.dir}/bin"></fileset>
<!-- set mainfest information to manifest -->
<manifest>
<attribute name="Implementation-Maker" value="bryan.liu" />
<attribute name="Implementation-Time" value="${touch.time}" />
</manifest>
</jar>
就是<zipgroupfileset>这个标签可以把我们指定的jar一起包到我们的目的Jar中了,这样当我们运行main.jar的时候就不会出现第三方类找不到的错误了。
当然,更普遍的方法是在运行的时候写个batch 把要用到的Jar放到classpath中,这样就避免了目标Jar过大(如果Jar很多的话)
E.g.
@echo on
set CLASSPATH_BAK=%CLASSPATH%;
set CLASSPATH=%CLASSPATH%;libs/log4j-1.2.14.jar;libs/commons-logging-1.1.jar;main.jarjava com.x.y.MainClass
set CLASSPATH=%CLASSPATH_BAK%