我有一个这样的目录结构:
Parent
|->A
|->B
|->*
我需要像这样压缩它:
Dest
|->A.zip
|->B.zip
|->*.zip
这*
意味着我不知道子文件夹的名称是什么。
我怎样才能做到这一点?
我正在使用一个 maven 项目,但我不介意使用 antrun 插件
我有一个这样的目录结构:
Parent
|->A
|->B
|->*
我需要像这样压缩它:
Dest
|->A.zip
|->B.zip
|->*.zip
这*
意味着我不知道子文件夹的名称是什么。
我怎样才能做到这一点?
我正在使用一个 maven 项目,但我不介意使用 antrun 插件
这是我喜欢的另一个解决方案,因为它不需要 antcontrib:
<target name="zipContentPackage">
<basename property="dir.name" file="${file_name}"/>
<echo message="Zipping folder: ${dir.name}"/>
<zip destfile="${zip_dir}/${dir.name}.zip" basedir="${file_name}"/>
</target>
<target name="-wrapper-zipContentPackage">
<antcall target="zipContentPackage" inheritAll="true">
<param name="file_name" value="${basedir}" />
</antcall>
</target>
<target name="packageContent">
<delete dir="${zip_dir}"/>
<mkdir dir="${zip_dir}"/>
<subant genericantfile="${ant.file}" target="-zipContentPackage" inheritall="true">
<dirset dir="${content_dir}" includes="*" />
</subant>
</target>
笔记:
我最终使用了 antcontrib 的 foreach
<target name="init">
<taskdef resource="net/sf/antcontrib/antcontrib.properties" classpathref="maven.compile.classpath"/>
</target>
<target name="packageContent" depends="init">
<delete dir="${zip_dir}"/>
<mkdir dir="${zip_dir}"/>
<foreach target="zipContentPackage" param="file_name">
<path>
<dirset dir="${content_dir}" includes="*"/>
</path>
</foreach>
</target>
<target name="zipContentPackage">
<basename property="dir.name" file="${file_name}"/>
<echo message="Zipping folder: ${dir.name}"/>
<zip destfile="${zip_dir}/${dir.name}.zip" basedir="${file_name}"/>
</target>