The doc says the includeEmptyDirs value defaults to true. I've tried unzipping a zip containing empty dirs using copy and the zipfileset and needed to explicitly set includeEmptyDirs to true. So either the implementation or the doc is wrong.
what you see is not related to the includeemptydirs attribute at all, which does default to true. This test here <target name="testIncludeEmptyDirsDefaultsToTrue" description="https://issues.apache.org/bugzilla/show_bug.cgi?id=47168"> <mkdir dir="${input}/foo"/> <mkdir dir="${output}"/> <copy todir="${output}"> <fileset dir="${input}"/> </copy> <au:assertFileExists file="${output}/foo"/> </target> passes. If you change the target to use a zipfileset (this is what I understand from your description) <target name="XtestIncludeEmptyDirsAndZipfileset" description="https://issues.apache.org/bugzilla/show_bug.cgi?id=47168"> <mkdir dir="${input}/foo"/> <mkdir dir="${output}/final"/> <zip destfile="${output}/zipfile.zip"> <fileset dir="${input}"/> </zip> <copy todir="${output}/final"> <zipfileset src="${output}/zipfile.zip"/> </copy> <au:assertFileExists file="${output}/final/foo"/> </target> it fails. The reason that it fails lies in zipfileset, though. Or more exactly in AbstractFileSet's implementation of the iterator() method which only returns non-directory resources at all.
Your right. Thanks for pointing the right direction. I've changed the summary.
(In reply to comment #1) > The reason that it fails lies in zipfileset, though. Or more exactly in > AbstractFileSet's implementation of the iterator() method which only returns > non-directory resources at all. Unfortunately it's also not quite as simple as that either. Updating ArchiveFileSet to return both file and directory entries doesn't quite work. The copy task will still ignore the directories as they get filtered out of the resources to copy by the SourceFileScanner in the buildMap method.