合并一个jar中的所有子目录

时间:2013-03-27 17:05:00

标签: java ant

我有一个这样的目录结构(在Netbeans中非常标准)

src/
build/generated/gen-1
build/generated/gen-2
...
build/generatad/gen-n

我使用以下ant命令将所有源包装在一个jar中:

<jar destfile="sources.jar" compress="true">
    <fileset dir="src"/>
    <fileset dir="build/generated/gen-1"/>
    <fileset dir="build/generated/gen-2"/>
    ...
    <fileset dir="build/generated/gen-n"/>
</jar>

是否有一种简洁的方式可以说我想将build/generated的所有子目录拼凑在一起,但是避免使用gen- i 前缀?

我尝试摆弄<dirset>,但无法将其与<jar>混合。

我想要一种避免将所有内容复制到临时目录(如this answer中)的方法。

2 个答案:

答案 0 :(得分:3)

假设您至少拥有Ant 1.8,则可以使用<mappedresources>

<jar destfile="sources.jar" compress="true">
    <fileset dir="src"/>
    <mappedresources>
        <fileset dir="build/generated"/>
        <regexpmapper from="^gen-\d*/(.*)$$" to="\1" handledirsep="true"/>
    </mappedresources>
</jar>

(请注意from属性中的加倍美元符号,由于Ant在属性中进行属性扩展的方式,因此在regexp中实际上是一美元。

答案 1 :(得分:0)

我怀疑在Ant中有可能。您可以查看one-jar库,但该库还需要指定所有文件集。

如果您有机会使用其他构建工具,那么我建议Gradle,这绝对是可能的。