簡體   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