【问题标题】:wrong JAR packaging in ant file with zipfileset使用 zipfileset 将 ant 文件中的 JAR 打包错误
【发布时间】:2022-05-13 10:45:59
【问题描述】:

我在用于构建 Java 应用程序的 ANT 文件中遇到了一个奇怪的问题。在生成 jar 文件时,最终我使用 zipfileset 在 JAR 中包含资源文件(图像、字体和配置文件),如下所示:

                    <zipfileset dir="src/res" prefix="res"/>
                <zipfileset dir="src/res/images" prefix="res/images" />
                <zipfileset dir="src/res/images/Bubbles" prefix="res/images/Bubbles"/>
                <zipfileset dir="src/res/images/Clocks" prefix="res/images/Clocks"/>
                <zipfileset dir="src/config" prefix="res/config"/>
                <zipfileset dir="src/ontology" prefix="res/ontology"/>

为了保持原始结构,如下所示:

res
 |-images
 |   |-Bubbles
 |   |-Clocks
 |-fonts
 |-config
 |-ontology

在 JAR 中,我使用了 zipfileset 中的前缀参数。我在任何 res/images/Bubbles 和 res/images/Clocks 文件夹中的 res/images 和三重图像(同一图像的 3 个副本)中得到重复的图像,另一方面,它们是 2 和 3 深度分别水平。 res/config 和 res/ontology 是正确的,没有重复的文件...截图看看我的意思:

我忘了提,但很明显,每个文件夹中的每个图像只有一个实例。任何想法是什么导致了这种行为?

问候, 亚历克斯

【问题讨论】:

    标签: java ant jar


    【解决方案1】:

    ant 实际上完全按照你告诉它的那样做。你告诉他:

    • 将src/res下的所有文件打包并映射到res。
    • 打包src/res/images下的所有文件并映射到res/images
    • 将src/res/images/Bubbles下的所有文件打包到res/images/Bubbles下

    现在假设您有一个src/res/images/Bubbles/activity_bubble_orange.png 文件。该文件包含在第一个 zipfileset、第二个 zipfileset 和第三个 zipfileset 中。因此,它将被包装三遍。

    要做你想做的事,你需要做一个&lt;zipfileset dir="src/res" prefix="res" /&gt;,但使用包含/排除过滤器过滤内容。

    请看这里:http://ant.apache.org/manual/Types/zipfileset.html,它说这是一种文件集。在这里:http://ant.apache.org/manual/Types/fileset.html 了解您如何为文件集指定包含/排除过滤器。

    【讨论】:

      【解决方案2】:

      您可以使用以下属性来包含整个路径,而无需对每个子目录进行硬编码。

      包括="*/.*"

      &lt;zipfileset src="examples.zip" includes="**/*.html" prefix="docs/examples"/&gt;

      在上面的例子中,我递归地包含了 *.html。

      苏克比尔·迪隆 添加teq

      【讨论】:

        猜你喜欢
        • 2011-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        相关资源
        最近更新 更多