Ant 重新定位动态文件夹的内容

Ant 重新定位动态文件夹的内容,ant,rename,move,Ant,Rename,Move,我有一个zip文件,里面有一个基本文件夹,里面有其他内容。在解压之前,我并不总是知道该基本文件夹将被调用 我想在ant中移动那个基本文件夹,同时重命名它——但似乎不知道怎么做。我已经编写了将zip文件的内容解压缩到${local.sdk.dir}/temp/的代码,但是从这里我无法确定如何重命名/移动解压缩的文件夹 <move todir="${local.sdk.dir}/${remote.sdk.file.name}"> <fileset dir="${local.sd

我有一个zip文件,里面有一个基本文件夹,里面有其他内容。在解压之前,我并不总是知道该基本文件夹将被调用

我想在ant中移动那个基本文件夹,同时重命名它——但似乎不知道怎么做。我已经编写了将zip文件的内容解压缩到
${local.sdk.dir}/temp/
的代码,但是从这里我无法确定如何重命名/移动解压缩的文件夹

<move todir="${local.sdk.dir}/${remote.sdk.file.name}">
  <fileset dir="${local.sdk.dir}/temp/<WHAT_DO_I_PUT_HERE?>"></fileset>
</move>

也试过

<move todir="${local.sdk.dir}/${remote.sdk.file.name}" includeEmptyDirs="yes" verbose="true">
  <fileset dir="${local.sdk.dir}/temp/" >
     <include name="**/*" />
  </fileset>
</move>

我一直在讨论这个问题,但我能做的最接近的事情是复制temp目录的内容,而不是temp中的基本文件夹,类似于


您可以一步完成所有这一切-从zip文件复制并重命名文件,在复制时更改目录名称。接受嵌套的,因此可以使用指定直接从zip文件复制的文件

要在复制文件时重命名这些文件,可以使用,
copy
任务也将其作为嵌套元素。在本例中,a看起来像是作业的工具

因此,如果我已经正确理解了您想要做的事情,那么这样的事情应该会起作用:

<copy todir="${local.sdk.dir}/${remote.sdk.file.name}">
  <zipfileset src="${your.zip.file}" />
  <cutdirsmapper dirs="1" />
</copy>

为什么你一直在标题中写标签?这是一个更好的解决方案,为我节省了大约20行-谢谢,我注意到这种方法的一点是,与我下面的答案相比,解包需要更长的时间-超过30分钟,而不是1.5分钟。值得一提的是,
元素的工作原理与
任务的子任务一样好,这可能比
上的
更清晰。
<copy todir="${local.sdk.dir}/${remote.sdk.file.name}">
  <zipfileset src="${your.zip.file}" />
  <cutdirsmapper dirs="1" />
</copy>
<regexpmapper from="[^/]*(.*)" to="\1" />