【发布时间】:2014-03-19 10:08:11
【问题描述】:
好吧,我对这个有点发疯了——更让我烦恼的是,我确信几年前我做过的事情与我现在想做的事情相似。
让我直接说,我使用的是 ANT 版本 1.8.2,所以我没有 1.6.2 版本的 zip 和空文件夹问题。我的大部分搜索似乎都提出了 1.6.2 的问题。
所以,这是我的 build.xml sn-p:
<target name="zip" depends="jar">
<echo>Creating zip file...</echo>
<zip destfile="${dist}/${zipfilename}">
<zipfileset dir="${dist}" includes="${jarfilename}" />
</zip>
<echo>...complete</echo>
</target>
这完成了它应该做的事情,从 {dist} 目录中取出 jar 文件,并将其放入 zip 中,这样 {dist} 目录就不会被维护 - 即:jar 文件被提取到 zip 的任何位置文件是。
但是,我想知道如何执行以下操作:
- 包括一个 {config} 目录和其中的所有文件,除了一个名为“test-config.xml”的文件
- 包括两个单独的空目录 - 例如 {subdir1} 和 {subdir2}。他们可能有也可能没有文件,但我不希望这些目录中有任何文件在压缩时。
对于带有空目录的第二部分,我完全满足于让 zip 任务在 zip 本身中创建它们,而不必在本地文件系统上创建它们。事实上,理想的情况是它们在 zip 文件中而不是在本地文件系统中 - 但我会采取任何我能做到的方法。
所以,我的本地文件系统将如下所示:
- dist/MyJar.jar
- config/config1.xml
- config/config2.xml
- config/test-config.xml
- subdir1/(可能存在也可能不存在,其中可能有也可能没有文件)
- subdir2/(可能存在也可能不存在,其中可能有也可能没有文件)
我希望 ZIP 文件在解压缩后得到:
- MyJar.jar
- config/config1.xml
- config/config2.xml
- subdir1/
- subdir2/
我该如何做到这一点?我已经尝试过文件集、dirset、zipfileset 的变体,但每次尝试都失败了。我所管理的最好的方法是让 {config} 目录中的文件被提取,就好像 {config} 目录不存在一样......没有维护它的层次结构,但我想要它。
【问题讨论】: