引用它时更改FileList的目录

时间:2012-02-20 15:12:57

标签: ant build directory copy 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,但我非常希望只在我的构建文件中保存一次文件列表。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分: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