2012-02-20 53 views
0

稍後在我的構建文件中引用它時,我想更改FileList的基目錄。引用時更改FileList的目錄

我定義以下FileList

<filelist dir="./dev" id="sourceFiles"> 
    <file name="files/file.php" /> 
    <file name="files/class.php" /> 
    <file name="files/functions.php" /> 
</filelist> 

而且我的目標有以下幾種

<target name="fetch"> 
    <copy todir="./src/files"> 
     <filelist refid="sourceFiles" /> 
    </copy> 
</target> 

<target name="build" depends="fetch"> 
    <replaceregexp match="(\d+.\d+.\d+)(.\d+)?" replace="\1.${build.number}"> 
     <filelist refid="sourceFiles" /> 
    </replaceregexp> 
</target> 

因此,使用replaceregexp任務時,它會使用位於./dev文件 - 但我想在之前複製的文件中替換現在位於./src中的任務。

當然,我可以複製文件列表並使用另一個dir,但我非常希望僅在我的構建文件中保存一次文件列表。

我該如何做到這一點?

+0

patternset(http://ant.apache.org /manual/Types/patternset.html)可以幫助您創建多個文件集,並使用不同的「頂級目錄」。 – Jayan 2012-02-21 04:46:06

回答

0

我認爲你在尋找什麼是複製命令中的映射如下:

<project name="demo" default="copy"> 

    <property name="build.number" value="1.0.1"/> 

    <target name="copy"> 
     <copy todir="build"> 
      <fileset dir="src"/> 
      <regexpmapper from="^(.*)\.txt$" to="\1.${build.number}"/> 
     </copy> 
    </target> 

    <target name="clean"> 
     <delete dir="build"/> 
    </target> 

</project> 

這裏是我的測試文件

|-- build 
| `-- files 
|  |-- one 
|  | |-- file1.1.0.1 
|  | `-- file2.1.0.1 
|  `-- two 
|   `-- file3.1.0.1 
|-- build.xml 
`-- src 
    `-- files 
     |-- one 
     | |-- file1.txt 
     | `-- file2.txt 
     `-- two 
      `-- file3.txt