Ant:压缩目录的内容,不包含顶层目录本身

eni*_*ent 5 ant zip

我如何使用Ant创建包含某个根目录中所有文件和嵌套目录的zip,但从zip中排除顶级目录本身。

例如,说我有这个文件结构:

/foo
    splat.js
    /bar
        wheee.css
Run Code Online (Sandbox Code Playgroud)

我希望zip在/ bar内包含splat和wheee,但我希望所有这些都包含在'foo'目录内。换句话说,解压到/按喇叭,这应该不是创建一个foo的目录; splat和bar应该以/ honk结尾。

我目前正在使用此工具(删除了多余的细节):

<zip destfile="${zipfile}" basedir="" includes="${distRoot}/**/*.*" />
Run Code Online (Sandbox Code Playgroud)

哪种文件集选择可以替代“包含”规范来实现此目的?

Mak*_*ree 2

它不是动态的,但使用 fullpath 属性允许您定义 zip 文件的路径结构。请参阅ant文档:http://ant.apache.org/manual/Types/zipfileset.html

<zip destfile="YourZipName.zip">
    <zipfileset fullpath="splat.js" dir="foo" includes="splat.js"/>
    <zipfileset fullpath="bar/wheee.css" dir="foo/bar" includes="wheee.css"/>
</zip>
Run Code Online (Sandbox Code Playgroud)

这可能会动态地满足您的需求。它应该拉入 foo 目录中的所有内容,然后将其压缩。这只是几个额外的步骤。

<mkdir dir="DirToBeZipped"/>
<copy todir="DirToBeZipped">
    <fileset dir="foo" includes="*"/>
</copy>
<zip destfile="YourZipName.zip" basedir="DirToBeZipped"/>
Run Code Online (Sandbox Code Playgroud)