我正在使用ANT解压缩然后重新压缩"开放式包装大会"文件。
它恰好是一个EXCEL(* .xlsx)文件:并且该过程有效;但似乎ANT' zip'任务创建ZIP与EXCEL本身创建的方式略有不同。
创建的ZIP条目似乎有斜杠字符。 我在使用Apache POI(有一些单元测试来检测并抱怨这种情况)打开生成的ZIP时发现了这一点,并使用DEBUG登录。
以下是重新打开重新压缩文件时来自Apache POI的WARNING日志消息的示例:
2015-10-29 14:06:11 WARN ZipPackage:135 - Entry xl/worksheets/_rels/ is not valid, so this part won't be add to the package.
org.apache.poi.openxml4j.exceptions.InvalidFormatException: A part name shall not have a forward slash as the last character [M1.5]: /xl/worksheets/_rels/
使用Ant时有没有办法避免这个(恼人的,但不是关键的)问题?
我在Windows平台上运行它。
这是我的(简化)' build.xml'文件。
<project name="repackage" default="repackage" basedir=".">
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="temp" location="temp"/>
<property name="extract" location="${temp}\extract"/>
<property name="inputfile" value="original.xlsx"/>
<target name="cleantemp">
<delete includeemptydirs="true">
<fileset dir="${temp}" includes="**/*"/>
</delete>
<mkdir dir="${extract}"/>
</target>
<target name="extract" depends="cleantemp">
<unzip src="${src}/${inputfile}" dest="${extract}"/>
</target>
<target name="reassemble" depends="extract">
<zip destfile="${build}/repair.xlsx" basedir="${extract}"/>
</target>
<target name="repackage" depends="reassemble">
</target>
</project>
答案 0 :(得分:3)
您使用的解析器看起来好像不喜欢目录条目(以/
结尾)。在filesonly="true"
任务中使用<zip>
。