Ant 通过refid创建zip文件时出错

Ant 通过refid创建zip文件时出错,ant,fileset,Ant,Fileset,作为ant任务的一部分,我正在尝试创建2个zip文件。两者都很相似,但其中一个包含一些额外的数据。所以为了减少代码,我想定义一个文件集并引用它。唯一的问题是这会产生错误 任务: 我已验证该文件是否存在。删除自述文件包含只会使错误发生在不同的文件上。此外,如果我只是复制并粘贴zipfileset到两个单独的标记中,一切都会正常工作。但我不想那样做 编辑:ApacheAnt(TM)版本1.8.2于2011年10月14日编译,Mac OS X 10.7。没有在任何其他平台上尝试过。我曾经尝试过同样的方

作为ant任务的一部分,我正在尝试创建2个zip文件。两者都很相似,但其中一个包含一些额外的数据。所以为了减少代码,我想定义一个文件集并引用它。唯一的问题是这会产生错误

任务:

我已验证该文件是否存在。删除自述文件包含只会使错误发生在不同的文件上。此外,如果我只是复制并粘贴zipfileset到两个单独的标记中,一切都会正常工作。但我不想那样做


编辑:ApacheAnt(TM)版本1.8.2于2011年10月14日编译,Mac OS X 10.7。没有在任何其他平台上尝试过。

我曾经尝试过同样的方法,但没有效果。
文件集
不接受嵌套的
文件集
。当您试图欺骗并使用
zipfileset
作为外部集时,ant将其内容视为zip文件。当ant试图解压文件时,会出现打开错误

fileset
必须具有
dir
属性。此目录必须是所有文件集组件的父目录。悲伤但真实

我最终找到了解决办法。创建X个文件集。这些文件集可以指定为
zip
任务的嵌套元素。如果在给定的情况下,您需要的文件少于X,那么为所有X文件集设置一个默认值,并始终压缩所有X文件集

<!-- define X empty filesets -->
<fileset dir="c:\temp\1" includes="asdfasdf.neverhappens" id="nullfileset" />
<fileset id="zipfileset2" refid="nullfileset" />
<fileset id="zipfileset3" refid="nullfileset" />

<!-- here go real sets -->
<zipfileset dir="${scripts.dir}" includes="myprogram" />

小心ant文件集。它们是可变的。我曾经写过一个关于它的“问题”,但有人把它删掉了。干得好,安静的工作,伙计们,“谢谢”


EDIT1:在Linux上,可以尝试
dir=“/”
并在
文件集中使用嵌套。我在Windows上处理我的问题,所以我不能这样做。Windows上没有“/”,我正在从不同的驱动器收集文件。

我曾经尝试过这样做,但没有成功。
文件集
不接受嵌套的
文件集
。当您试图欺骗并使用
zipfileset
作为外部集时,ant将其内容视为zip文件。当ant试图解压文件时,会出现打开错误

fileset
必须具有
dir
属性。此目录必须是所有文件集组件的父目录。悲伤但真实

我最终找到了解决办法。创建X个文件集。这些文件集可以指定为
zip
任务的嵌套元素。如果在给定的情况下,您需要的文件少于X,那么为所有X文件集设置一个默认值,并始终压缩所有X文件集

<!-- define X empty filesets -->
<fileset dir="c:\temp\1" includes="asdfasdf.neverhappens" id="nullfileset" />
<fileset id="zipfileset2" refid="nullfileset" />
<fileset id="zipfileset3" refid="nullfileset" />

<!-- here go real sets -->
<zipfileset dir="${scripts.dir}" includes="myprogram" />

小心ant文件集。它们是可变的。我曾经写过一个关于它的“问题”,但有人把它删掉了。干得好,安静的工作,伙计们,“谢谢”


EDIT1:在Linux上,可以尝试
dir=“/”
并在
文件集中使用嵌套。我在Windows上处理我的问题,所以我不能这样做。Windows上没有“/”,我从不同的驱动器收集文件。

这是有一定意义的,尽管嵌套文件集会很好。在我的例子中,我可能会使用选择器,因为所有相关文件都有一个父目录。我无法剪切路径,zip保留了从根目录到文件的整个路径。也许你能以某种方式修复它。这是有一定意义的,尽管嵌套文件集会很好。在我的例子中,我可能会使用选择器,因为所有相关文件都有一个父目录。我无法剪切路径,zip保留了从根目录到文件的整个路径。也许你能以某种方式修复它。
<!-- define X empty filesets -->
<fileset dir="c:\temp\1" includes="asdfasdf.neverhappens" id="nullfileset" />
<fileset id="zipfileset2" refid="nullfileset" />
<fileset id="zipfileset3" refid="nullfileset" />

<!-- here go real sets -->
<zipfileset dir="${scripts.dir}" includes="myprogram" />