我有一组模板文件,如
<!-- @TEMPLATE@ -->
<!-- @DONOTEDIT@ -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SuperDuper @VARIANT@</title>
</head>
<body>
...
@PRODUCTCODENAME@
...
</body>
我想使用NAnt进行部署,以便实例化嵌入的关键字,如
<target name="deployTemplates">
<property name="_buildstamp" value="${DestDir}/templates_buildstamp"/>
<uptodate property="_uptodate" verbose="${Verbose}">
<sourcefiles basedir="${TemplateDir}">
<include name="**"/>
</sourcefiles>
<targetfiles>
<include name="${_buildstamp}"/>
</targetfiles>
</uptodate>
<if test="${not _uptodate}">
<copy todir="${CourseDestDir}" verbose="${Verbose}" overwrite="True">
<!-- Have to specify the fileset again to maintain directory structure. -->
<fileset basedir="${TemplateDir}">
<include name="**"/>
</fileset>
<filterchain>
<replacetokens>
<token key="DONOTEDIT" value="Do not edit, will be overwritten."/>
<token key="PRODUCTCODENAME" value="${Product}"/>
<token key="VARIANT" value="${Variant}"/>
</replacetokens>
</filterchain>
</copy>
<touch file="${_buildstamp}"/>
</if>
</target>
但是如何在每个部署的文件中嵌入单个模板文件的名称,也就是说,将@ TEMPLATE @替换为模板文件的位置,以便其他人知道在哪里进行永久性更改?
答案 0 :(得分:0)
查看NAnt source code和<filterchain>
文档 - 您必须实现自定义Filter
,这使得当前文件名可用于替换。 existing filters不会公开此信息。