Ant:压缩目录的内容,而不是顶级目录本身

时间:2012-02-02 18:38:40

标签: ant zip

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

例如,假设我有这样的文件结构:

/foo
    splat.js
    /bar
        wheee.css

我希望zip包含splat和wheee inside / bar,但我希望所有内容都包含在'foo'目录中。换句话说,将此解压缩为/ honk应该 而不是 创建一个foo目录; splat和bar应该以/ honk的根部结束。

我目前正在使用此功能(删除了无关的详细信息):

<zip destfile="${zipfile}" basedir="" includes="${distRoot}/**/*.*" />

什么样的文件集选择可以替换'包含'规范来实现这个目标?

1 个答案:

答案 0 :(得分:1)

它不是动态的,但使用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>

这可能会让你想要动态。它应该拉入foo目录中的所有东西,然后拉上它。这只是一些额外的步骤。

<mkdir dir="DirToBeZipped"/>
<copy todir="DirToBeZipped">
    <fileset dir="foo" includes="*"/>
</copy>
<zip destfile="YourZipName.zip" basedir="DirToBeZipped"/>