Possible Duplicate:
Clean way to combine multiple jars? Preferably using Ant
当我从 eclipse 中导出一个 jar 文件时,我得到的一个选项是将类文件从依赖 jar 中提取到我的最终 jar 中(其他选项包括将 jar 打包到我的最终 jar 中或将所有内容都留在我的最终 jar 中)我的最后一个 jar )。当然会有关于许可问题的警告。
那么问题来了——这在 apache ant 中的等价物是什么?如何从我的程序依赖的 jar 中提取 ant 类并将它们重新打包到我的最终 jar 中?
尝试这样的事情:
<?xml version="1.0"?>
<project name="blah" basedir="." default="jar">
<target name="init">
<property name="build" value="./build" />
<property name="srcdir" value="./src" />
<property name="lib.dir" value="./lib" />
<property name="dist" value="./dist" />
<property name="docs" value="./docs" />
<property name="debug" value="true" />
<path id="project.class.path">
<pathelement path="${java.class.path}" />
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</path>
</target>
<target name="compile" depends="init">
<mkdir dir="${build}" />
<javac debug="${debug}"
optimize="${optimize}"
destdir="${build}"
deprecation="${deprecation}"
source="1.6" target="1.6">
<src path="${srcdir}" />
<classpath refid="project.class.path" />
</javac>
</target>
<target name="jar" depends="compile">
<mkdir dir="${dist}" />
<jar destfile="${dist}/${ant.project.name}.jar">
<fileset dir="${build}">
<include name="com/blah/blah/*.class" />
</fileset>
</jar>
</target>
<target name="package" depends="compile, jar">
<jar destfile="${dist}/${ant.project.name}-release.jar" basedir="${build}" includes="**/*.*">
<manifest>
<attribute name="Main-Class" value="com.blah.blah.Main" />
</manifest>
<zipgroupfileset dir="${lib.dir}" includes="*.jar" />
<zipgroupfileset dir="${dist}" includes="${ant.project.name}.jar" />
</jar>
</target>
</project>
然后你会去:
Ant 包
生成包含 lib 文件夹中所有类的单个 jar 文件。