我希望稍后在我的构建文件中引用它时更改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 :(得分: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