如何使用zipfileset正确创建ZIP文件?

时间:2012-11-18 08:59:57

标签: java ant

我想从它的子目录中收集Myproj目录中的所有.map个文件,然后创建一个L.zip文件。

这是我的代码。

<target name="buildLFiles" >    
  <zip destfile="../../bin/L.zip" update="true" >
     <zipfileset casesensitive="no" dir="../../../Myproj" includes= "****/*.MAP" />
  </zip>
</target>

这里的问题是,我收到了所有.map个文件,但它是以文件层次结构创建的。

实施例

这是原始文件结构:

MyProj  
 |- a  
    |- b   
       | - x1.MAP  

当前输出:

L
|- a
   |- b 
      | - x1.MAP

必需的输出:

L
|- x1.MAP

1 个答案:

答案 0 :(得分:1)

您可以做的是使用另一个目录中的复制任务的flatten属性展平结构,然后压缩该目录。

<target name="buildLFiles">
     <property name="tmp.dir" value="../../bin/TMP" />
     <property name="zip.file" value="../../bin/L.zip" />
     <copy todir="${tmp.dir}" flatten="true">
         <fileset dir="../../../Myproj">
             <include name="**/*.MAP" />
         </fileset>
     </copy>
     <zip destfile="${zip.file}" update="true">
         <zipfileset casesensitive="no" dir="${tmp.dir}" includes="*.MAP" />
     </zip>
     <delete dir="${tmp.dir}" />
</target>