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



我有一个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>

并对此进行了讨论,但在没有蚂蚁抛出错误的情况下,我最接近的方法是复制临时目录的内容,而不是临时内的基本文件夹。

您可以在一个步骤中完成所有这些操作-从zip文件复制并重命名文件,在复制时更改目录名。copy任务接受嵌套的资源集合,因此可以使用zipfileset指定要直接从zip文件复制的文件。

为了在复制文件时重命名文件,可以使用映射器,copy任务也将其作为嵌套元素。在这种情况下,cutsdirmapper看起来像是作业的工具。

所以,如果我已经理解了你想正确地做什么,这样的事情应该会起作用:

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

cutdirsmapper仅在Ant 1.8.2以后的版本中可用,因此如果您使用的是早期版本,您可以尝试regexpmapper:

<regexpmapper from="[^/]*(.*)" to="1" />

类似于这个问题

  <target name="relocate_sdk_folder">     
    <path id="sdk_folder_name">
      <dirset dir="${local.sdk.dir}/temp/">
        <include name="*"/>
      </dirset>
    </path>
    <property name="sdk_folder_name" refid="sdk_folder_name" />
    <echo message="renaming ${sdk_folder_name} to ${remote.sdk.file.name}" />
    <move file="${sdk_folder_name}" tofile="${local.sdk.dir}/${remote.sdk.file.name}" />         
</target>

相关内容

  • 没有找到相关文章

最新更新