来自zip文件的ant copy文件夹

时间:2010-08-20 19:35:59

标签: ant

我有一个包含以下结构的zip文件

apache-tomcat-6.0.26.zip  Apache的Tomcat的6.0.26 / web应用/管理器

我想将经理文件夹复制到另一个目录

我试过

<copy todir="${tomcat.webapp.dir}/manager/" includeEmptyDirs="true">
 <zipfileset src="${tomcat.zip.file}/" >
  <patternset>
   <include name="apache-tomcat-${tomcat.version}/webapps/manager" />
  </patternset>
 </zipfileset>
</copy>

输出管理器文件夹包含以下结构 Apache的Tomcat的6.0.26 / webapps /目录经理。我只需要经理文件夹及其内容而不是其父母。

尝试更改为但收到错误信息该文件夹不是archieve

2 个答案:

答案 0 :(得分:6)

使用模式集来限制从zip中提取的文件,以及剥离前导目录名称的映射器

<unzip src="apache-tomcat-${tomcat.version}.zip" dest="${tomcat.webapp.dir}/manager">
    <patternset>
        <include name="**/webapps/manager/**"/>
    </patternset>
    <globmapper from="apache-tomcat-${tomcat.version}/webapps/manager/*" to="*"/>
</unzip>

答案 1 :(得分:2)

这是我的解决方案:

<copy todir="${tomcat.webapp.dir}/manager/" includeEmptyDirs="true">
 <zipfileset src="${tomcat.zip.file}/" prefix="apache-tomcat-${tomcat.version}/webapps" >
  <patternset>
   <include name="apache-tomcat-${tomcat.version}/webapps/manager" />
  </patternset>
 </zipfileset>
</copy>

我非常不喜欢<unzip>任务,因为当它失败时,它没有错误(<copy>的默认值是失败时出错,这正是你在构建中想要的。)