2

我有一个这样的目录结构(在 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>.

我想要一种避免将所有内容复制到临时目录的方法(就像在这个答案中一样)。

4

2 回答 2

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 在属性中进行属性扩展的方式,它实际上是正则表达式中的单美元)

于 2013-03-27T17:15:13.523 回答
0

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

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

于 2013-03-27T17:10:46.417 回答