Ant中的Zip任务-包含空和非空子目录
好吧,我对这件事有点疯狂——更让我感到不安的是,我确信几年前我做了一些类似于我现在尝试做的事情 让我马上说,我使用的是ANT版本1.8.2,所以我没有zip和空文件夹的1.6.2问题。我的大部分搜索似乎都提到了1.6.2问题 下面是我的build.xml代码片段:Ant中的Zip任务-包含空和非空子目录,ant,zip,task,Ant,Zip,Task,好吧,我对这件事有点疯狂——更让我感到不安的是,我确信几年前我做了一些类似于我现在尝试做的事情 让我马上说,我使用的是ANT版本1.8.2,所以我没有zip和空文件夹的1.6.2问题。我的大部分搜索似乎都提到了1.6.2问题 下面是我的build.xml代码片段: <target name="zip" depends="jar"> <echo>Creating zip file...</echo> <zip destfile="$
<target name="zip" depends="jar">
<echo>Creating zip file...</echo>
<zip destfile="${dist}/${zipfilename}">
<zipfileset dir="${dist}" includes="${jarfilename}" />
</zip>
<echo>...complete</echo>
</target>
正在创建zip文件。。。
完成
这就是它应该做的,从{dist}目录中获取jar文件,并将其放入zip中,这样{dist}目录就不会被维护-即:jar文件被提取到zip文件所在的任何地方
但是,我想知道如何做到以下几点:
- 包括一个{config}目录和其中除“test config.xml”之外的所有文件
- 包括两个单独的空目录-例如{subdir1}和{subdir2}。他们可能有文件,也可能没有文件,但我不想在这些目录中的任何文件时,他们得到压缩
- dist/MyJar.jar
- config/config1.xml
- config/config2.xml
- config/test-config.xml
- subdir/(可能存在,也可能不存在,也可能不存在文件)
- subdir2/(可能存在也可能不存在,其中可能有也可能没有文件)
- MyJar.jar
- config/config1.xml
- config/config2.xml
- 次曲面1/
- 次曲面2/
我如何做到这一点?我尝试过文件集、dirset、zipfileset的变体,但每次尝试都失败了。我所能做的最好的事情就是将{config}目录中的文件提取出来,就像{config}目录不存在一样。。。没有维护该目录的层次结构,但我希望它是这样。这里有一种方法可以使用
zipfileset
来处理config
目录:
我能想到的将空文件夹放入zip的唯一方法是在文件系统上创建它们,使用zipfileset
添加它们,然后在创建zip文件后删除它们
下面是一个满足您需要的片段(注意:我根据您的示例使用文件夹和文件名;您可以根据需要使用属性引用替换它们):
我很欣赏这些指点。事实证明,我的部分问题是,我把属性名/位置和属性名/名称值混为一谈——在我期望的相对位置获得绝对路径让我大吃一惊!也就是说,我使用了另一种解决方案:一个单独的目标,创建整个结构,包括空目录。正如我希望zip文件看起来的那样,然后是zip目标,它简单地获取该结构并通过包含所有内容来压缩它。在这种情况下,有一个相对简单的解决方案,我昨天看不到(直到今天有人向我指出)