引用zip文件中的文件,ANT中不存在

时间:2011-11-28 09:33:18

标签: ant

我想知道这是否可行:

  • 引用zipfileset中由于构建输出而可能存在或可能不存在的文件

我如何在zipfileset

中处理此问题

有什么想法吗?

由于

此致

KARTHIK

2 个答案:

答案 0 :(得分:2)

包含/排除文件,但不包括目录。 至少从1.8.x开始(这是我正在使用的,没有检查1.6),你可以使用:

<zipfileset dir="something" prefix="" erroronmissingdir="false">

不会产生错误。 “erroronmissingdir”属性允许修复此情况。

答案 1 :(得分:1)

我认为没有任何问题。

这是一个示例zip(jar)文件:

$ jar tvf src.zip
     0 Wed Nov 30 11:54:38 GMT 2011 META-INF/
    62 Wed Nov 30 11:54:38 GMT 2011 META-INF/MANIFEST.MF
     0 Wed Nov 30 11:53:28 GMT 2011 src/
     0 Wed Nov 30 11:57:14 GMT 2011 src/a/
     0 Wed Nov 30 11:53:38 GMT 2011 src/a/exists.txt
     0 Wed Nov 30 11:57:14 GMT 2011 src/a/other.txt

这是一个示例构建文件,用于测试zipfileset对现有和不存在文件的行为:

<project default="test">

  <target name="test">
    <pathconvert property="found">
      <zipfileset src="src.zip">
        <include name="src/a/not-exists.txt"/>
        <include name="src/a/exists.txt"/>
      </zipfileset>
    </pathconvert>
    <echo message="found: ${found}"/>
    <mkdir dir="extract"/>
    <copy todir="extract">
      <zipfileset src="src.zip">
        <include name="src/a/not-exists.txt"/>
        <include name="src/a/exists.txt"/>
      </zipfileset>
    </copy>
  </target>

</project>

以下是此示例的输出:

$ ant
Buildfile: C:\tmp\ant\build.xml

test:
     [echo] found: C:\tmp\ant\src.zip:src/a/exists.txt
    [mkdir] Created dir: C:\tmp\ant\extract
     [copy] Copying 1 resource to C:\tmp\ant\extract

BUILD SUCCESSFUL
Total time: 0 seconds

尝试访问不存在的文件时没有错误。

以下是dir文件从zip中复制的结果:

$ find extract/
extract/
extract/src
extract/src/a
extract/src/a/exists.txt