Использование NAnt filterchain для создания нескольких файлов шаблонов - PullRequest
1 голос
/ 07 ноября 2011

У меня есть набор файлов шаблонов, таких как

<!-- @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 @ на местоположение файла шаблона, чтобы другие знали, где вносить постоянные изменения?

1 Ответ

0 голосов
/ 07 ноября 2011

Просмотр документации NAnt и <filterchain> - вам придется реализовать пользовательский Filter, который делает текущее имя файла доступным для замен. существующие фильтры не предоставляют эту информацию.

...