ANT:' ZIP'任务 - 如何防止ZIP条目上的尾部斜杠?

时间:2015-10-29 14:11:49

标签: ant zip apache-poi

我正在使用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>

1 个答案:

答案 0 :(得分:3)

您使用的解析器看起来好像不喜欢目录条目(以/结尾)。在filesonly="true"任务中使用<zip>