Java 需要一个ANT任务在最终的jar中包含一组jar文件';秘书/图书馆主任
我的项目文件夹中有一堆相关JAR:Java 需要一个ANT任务在最终的jar中包含一组jar文件';秘书/图书馆主任,java,ant,jar,Java,Ant,Jar,我的项目文件夹中有一堆相关JAR: /lib/someapi-1.1.1/main.jar /lib/someotherapi-2.2.2/api-2.2.2.jar /lib/... 我构建了一个JAR文件,我的应用程序要求依赖JAR包含在JAR中的/lib文件夹中的最终JAR中,因此最终JAR应该具有如下结构: /org/me/myclasses.class /lib/main.jar /lib/api-2.2.2.jar 如何获取最后一个jar文件的/lib目录中包含的/lib/*.j
/lib/someapi-1.1.1/main.jar
/lib/someotherapi-2.2.2/api-2.2.2.jar
/lib/...
我构建了一个JAR文件,我的应用程序要求依赖JAR包含在JAR中的/lib文件夹中的最终JAR中,因此最终JAR应该具有如下结构:
/org/me/myclasses.class
/lib/main.jar
/lib/api-2.2.2.jar
如何获取最后一个jar文件的/lib目录中包含的/lib/*.jar文件
澄清
基本上,我只是尝试将一组资源文件展平并添加到最后一个jar中的给定目录中。我看到的最简单的方法是使用
copy
任务及其flatte
属性将所有jar复制到一个临时文件夹中,并将这个临时目录的jar包含到目标jar中
由询问者添加的详细信息 以下是最终ANT目标的外观(供将来参考):
如果您想跳过复制步骤,可以这样做。它用于将源库目录展平到classes/lib区域
<jar destfile="${dist}/MyOneBigJar.jar">
<fileset dir="${classes}"/>
<mappedresources>
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
<chainedmapper>
<flattenmapper />
<globmapper from="*" to="classes/lib/*" />
</chainedmapper>
</mappedresources>
</jar>
我并不真正需要一个jar的可执行功能和自定义类加载器,我在这里使用的是Hadoop,该应用程序已经能够解包jar文件的/lib目录并将它们添加到自己的类路径中。我只需要将文件压缩到/lib中,我可以手动操作,但我想将其自动化。是的,但我不知道如何将我想要的文件展开并添加到jar中的指定路径。
<jar destfile="${dist}/MyOneBigJar.jar">
<fileset dir="${classes}"/>
<mappedresources>
<fileset dir="lib">
<include name="**/*.jar" />
</fileset>
<chainedmapper>
<flattenmapper />
<globmapper from="*" to="classes/lib/*" />
</chainedmapper>
</mappedresources>
</jar>