我有foo.js,和一个ant构建过程,结果foo.min.js。
foo.js有一个头注释,包括:
* $Id: foo.js 12345 2011-10-04 14:35:23Z itoltz $
其中12345为提交到SVN时的修订版本。
我想复制foo.min.js到foo.min.12345.js
您可以使用loadfile和regex将版本号提取到属性中。然后,您可以使用属性复制该文件。
<project default="rename">
<target name="rename" depends="get-rev">
<copy file="foo.min.js" toFile="foo.min.${revision.number}.js"/>
</target>
<target name="get-rev">
<loadfile srcFile="foo.js" property="revision.number">
<filterchain>
<linecontainsregexp>
<regexp pattern="* $Id: foo.js"/>
</linecontainsregexp>
<tokenfilter>
<replaceregex pattern="* $Id: foo.js (d+).*" replace="1"/>
</tokenfilter>
<striplinebreaks/>
</filterchain>
</loadfile>
<echo message="revision.number: ${revision.number}"/>
</target>
</project>
输出:$ ls
build.xml foo.js foo.min.js
$
$ ant
Buildfile: C:tmpbuild.xml
get-rev:
[echo] revision.number: 12345
rename:
[copy] Copying 1 file to C:tmp
BUILD SUCCESSFUL
Total time: 0 seconds
$
$ ls
build.xml foo.js foo.min.12345.js foo.min.js