可能重复:
Clean way to combine multiple jars? Preferably using Ant
当我从eclipse导出一个jar文件时,我得到的一个选项是将类文件从依赖jar中提取到我的最后一个jar中(其他选项包括将jar包装到我的最后一个jar中或者只是将所有内容放在我的最后一个罐子)。当然有关于许可问题的警告。
所以这就是问题 - apache ant中的等价物是什么?如何从我的程序所依赖的jar中创建ant提取类并将它们重新打包到我的最终jar中?
答案 0 :(得分:0)
尝试这样的事情:
<?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 package
生成包含 lib 文件夹中所有类的单个jar文件。