繁体   English   中英

将Ant中的文件复制到动态目录名称

[英]Copy file in Ant to dynamic directory name

我需要使用ant将文件从一个文件夹复制到另一个文件夹。 我知道src文件的确切名称,但是对于目标文件,它是未知的,因为它是基于版本的文件夹,所以我使用了以下脚本,但是它没有用(请注意todir属性中的*:

<copy todir="${env.WORKSPACE}/my_dist_folder*" >
    <fileset dir="${env.WORKSPACE}/my_src_folder">
         <exclude name="**/*.svn"/>
    </fileset>
</copy>

请指教! 谢谢

假设可能有多个my_dist_folder-xx..文件夹:

<!-- goups all directories of the form "my_dist_folder-xx" -->
<dirset id="dir_list" dir="${env.WORKSPACE}">
  <include name="my_dist_folder*"/>
</dirset>
<!-- generate path names of the above dirs and sort them -->
<pathconvert property="dir_names_list" refid="dir_list" pathsep=","/>
<sortlist property="sorted_names_list" value="${dir_names_list}" delimiter="," />
<!-- pick the last path-name (as it corresponds with the latest version-number directory ) -->
<propertyregex property="dist_folder" input="${sorted_names_list}" regexp=",?([^,]+)$" select="\1"/>
<!-- use this "dist_folder" as "todir" in the copy task -->
<copy todir="${dist_folder}" >
    <fileset dir="${env.WORKSPACE}/my_src_folder">
         <exclude name="**/*.svn"/>
    </fileset>
</copy>  

尽管从您的问题来看,所有此类my_dist_folder-xx..文件夹似乎都将直接位于basedir ${env.WORKSPACE} ...如果它们可能位于basedir的子目录下,则替换行<include name="my_dist_folder*"/><include name="**/my_dist_folder*"/><dirset>任务。

UPDATE :同样,如果您确定系统上始终只有一个这样的文件夹my_dist_folder-xx.. ,则可以删除以下两行- <sortlist><propertyregexp> ,因为<dirset>只会生成一个路径名 ,因此您不需要排序/选择最后一个。 因此您可以使用<pathconvert>属性直接设置目标文件夹 例如:

<dirset id="dir_list" dir="${env.WORKSPACE}">
  <include name="my_dist_folder*"/>
</dirset>
<!-- generate path name of the above dir -->
<pathconvert property="dir_names_list" refid="dir_list" pathsep=","/>   
<!-- use this "dir_names_list" as "todir" in the copy task -->
<copy todir="${dir_names_list}" >
    <fileset dir="${env.WORKSPACE}/my_src_folder">
         <exclude name="**/*.svn"/>
    </fileset>
</copy> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM