java - 文件列表中每个元素的 Ant zipfileset

标签 java ant jar

使用 stock ant,是否可以为文件列表中的每个元素使用一个 zipfileset?我正在寻找一种方法来指定我使用一次的 jar 列表,然后能够将其指定为类路径和要部署到我自己的 jar 中的文件。

这是构建我的发布 jar 并包含所有类文件的最快方法,但它需要将每个 jar 指定为一个 zipfileset

<jar destfile="release.jar">
    ... my files ...
    <zipfileset src="jar/exampleA.jar" includes="**/*.class"/>
    <zipfileset src="jar/exampleB.jar" includes="**/*.class"/>
</jar>

我更喜欢这样指定它:

<filelist id="proj.jars" dir="jar">
    <file id="exampleA" name="exampleA.jar"/>
    <file id="exampleB" name="exampleB.jar"/>
</filelist>

<jar destfile="release.jar">
    ... my files ...
    <!-- for each jar in proj.jars -->
        <zipfileset src="${jar}" includes="**/*.class"/>
</jar>

我确实有一个可行的解决方案,但速度要慢得多(慢 4 或 5 倍)

<jar destfile="release.jar">
    ... my files ...
    <restrict>
        <name name="**/*.class"/>
        <archives>
            <zips>
                <filelist refid="proj.jars"/>
            </zips>
       </archives>
    </restrict>
</jar>

相关问题可以找here , 但使用 zipgroupfileset 并且不能用于从 zip 文件中排除文件。

最佳答案

使用 restrict/archive/zips 版本需要多长时间有点疯狂。

我们目前的解决方案是将它们解压缩到一个临时目录并通过 zipfileset 包含它们:

<unjar dest="${include-in-jar.tmpdir}">
    <patternset><exclude name="**/*.MF"/></patternset>
    <path refid="include-in-jar.classpath" />
</unjar>
<war ...>
    <zipfileset dir="${include-in-jar.tmpdir}" includes="**/*" />
</war>

这需要 4 秒,而 restrict/archive/zips 需要 40 秒。

关于java - 文件列表中每个元素的 Ant zipfileset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19254265/

相关文章:

ant - JMeter:我如何将示例请求分组为一个测试用例,以便报告看起来整洁

bash 命令 : search for class in file system of jars

java - 聊天客户端/服务器 - 如何指示客户端接受来自控制台或服务器的输入

java - Android 中未知的 NullPointerException

c++ - 没有复制文件的 TeamCity 依赖?

java - 是否有列出Java .jar文件支持的命令行选项的标准方法?

Java 程序在 Eclipse 中运行良好,但不能作为 .jar 文件运行(配置路径是否错误?)

java - try block 给出编译错误

java - AlarmManager BroadcastReceiver,onReceive 从未被调用

java - 使用ant在文件中添加制表符空格