3 回答

TA贡献1820条经验 获得超2个赞
只需zipgroupfileset与Ant Zip任务一起使用
<zip destfile="out.jar">
<zipgroupfileset dir="lib" includes="*.jar"/>
</zip>
这将拉平所有包含的jar库的内容。

TA贡献1735条经验 获得超5个赞
弗拉基米尔的答案是正确的,但我认为他的建议暗示将所有罐子重新包装在一个大的out.jar中,然后将其作为单个<zipfileset>或类似的内容输入到Ant Jar任务中。此两步方法是不必要的。我不确定这是否与Ant版本有关,但是我有Ant 1.7.1,其<jar>任务为谅解<zipgroupfileset>,它可以直接提供第三方jar的所有内容。
<jar destfile="MyApplication.jar">
<zipgroupfileset dir="lib" includes="*.jar" />
<!-- other options -->
<manifest>
<attribute name="Main-Class" value="Main.MainClass" />
</manifest>
</jar>

TA贡献1865条经验 获得超7个赞
尝试先将JAR提取到编组目录中:
<target name="combine-jars">
<mkdir dir="${marshall.dir}"/>
<unzip dest="${marshall.dir}">
<fileset dir="${external.jar.dir}">
<include name="**/*.jar"/>
</fileset>
</unzip>
<jar destfile="${combined.jar}" basedir="${marshall.dir"}>
<delete dir="${marshall.dir}"/>
</target>
这里${marshall.dir}是一个临时目录,${external.jar.dir}是您保留JAR的位置,并且${combined.jar}是目标JAR。
添加回答
举报