置換

説明

Replaceは、選択したファイル内で特定の文字列を別の文字列に置換するための、ディレクトリベースのタスクです。

改行を跨いでのテキスト置換を行う場合は、ネストされた<replacetoken>要素を使用する必要があります。

出力ファイルは、既存のファイルと異なる場合のみ書き込まれます。これにより、このタスクによって再生成された変更のないファイルに基づく不要な再ビルドを防ぎます。

パラメータ

属性 説明 必須
file トークンを置換するファイル。 以下のいずれか1つ
dir 複数のファイルでトークンを置換する場合に使用するベースディレクトリ。
encoding replaceが操作するファイルのエンコーディング。 いいえ。デフォルトはJVMのデフォルト文字エンコーディング。
token 置換する必要があるトークン。 はい。ネストされたreplacetoken要素またはreplacefilterfile属性を使用する場合を除く。
value トークンの新しい値。 いいえ。デフォルトは空文字列()。
summary 置換操作のサマリーを生成するかどうかを示します。処理されたトークンの出現回数とファイル数が詳細に示されます。 いいえ。デフォルトはサマリーなし。
propertyFile ネストされた<replacefilter>要素を使用して指定されたプロパティが取得される有効なプロパティファイル。 はい。<replacefilter>property属性を使用する場合のみ。
replacefilterfile 有効なプロパティファイル。各プロパティは、tokenがプロパティ名、valueがプロパティの値であるreplacefilterとして扱われます。 いいえ
includes 含める必要があるファイルのパターンのカンマまたはスペース区切りリスト。 いいえ。デフォルトはすべて(**)。
includesfile ファイル名。このファイルの各行は、includeパターンとして扱われます。 いいえ
excludes 除外する必要があるファイルのパターンのカンマまたはスペース区切りリスト。 いいえ。デフォルトはデフォルトの除外、またはdefaultexcludesnoの場合は除外なし。
excludesfile ファイル名。このファイルの各行は、excludeパターンとして扱われます。 いいえ
defaultexcludes デフォルトの除外を使用するかどうかを示します(yes|no)。 いいえ。デフォルトはyes
preserveLastModified ファイルが変更された場合でも、ファイルのタイムスタンプを保持します。Apache Ant 1.8.0以降 いいえ。デフォルトはfalse
failOnNoReplacements タスクが何も実行しなかった場合にビルドを失敗させるかどうか。Ant 1.8.0以降 いいえ。デフォルトはfalse

<replace file="${src}/index.html" token="@@@" value="wombat"/>

ファイル${src}/index.html内で、文字列@@@の出現箇所を文字列wombatに置換します。

ネストされた要素として指定されたパラメータ

このタスクは暗黙的なFileSetを形成し、<fileset>のほとんどの属性と、ネストされた<include><exclude><patternset>要素をサポートします。

Ant 1.8.0以降、このタスクは、ネストされた要素として、ファイルシステムベースのリソースコレクションをサポートします。

replacetokenとreplacevalue

置換するテキストまたは置換テキストが改行を跨いでいる場合は、ネストされた要素を使用して指定できます。

これらの要素は属性をサポートします。

属性 説明 必須
expandProperties ネストされたテキストでプロパティを展開するかどうか。Ant 1.8.0以降 いいえ。デフォルトはtrue

<replace dir="${src}" value="wombat">
  <include name="**/*.html"/>
  <replacetoken><![CDATA[multi line
token]]></replacetoken>
</replace>

${src}ディレクトリ内のすべてのHTMLファイルで、文字列multi line\ntokenの出現箇所を文字列wombatに置換します。ここで\nはプラットフォーム固有の改行文字です。

<replace file="${src}/index.html">
  <replacetoken><![CDATA[two line
token]]></replacetoken>
  <replacevalue><![CDATA[two line
token]]></replacevalue>
</replace>

replacefilter

複数の置換を許可することに加えて、オプションのネストされた<replacefilter>要素により、プロパティファイルから置換値を取得できます。このファイルの名前は、<replace>属性propertyFileを使用して指定されます。

属性 説明 必須
token 検索する文字列。 はい。ネストされたreplacetokenが指定されている場合を除く。
value 置換文字列。 どちらか一方を指定できますが、両方同時に指定することはできません。必要に応じて、どちらも省略できます。
property 置換値として使用するプロパティの名前。

Ant 1.8.0以降tokenvalueは、タスク自体と同様にネストされた要素として指定できます。

valuepropertyも使用されていない場合、<replace>属性valueおよび/または<replacevalue>要素を使用して提供された値が使用されます。これらのいずれのオプションでも値が指定されていない場合、トークンは空文字列に置き換えられます。

ファイルconfigure.shで、@token1@のすべてのインスタンスをdefaultvalueに、@token2@のすべてのインスタンスをvalue2に、@token3@のすべてのインスタンスをプロパティファイルsrc/name.propertiesにあるプロパティproperty.keyの値に置き換えます。

<replace file="configure.sh"
         value="defaultvalue"
         propertyFile="src/name.properties">
  <replacefilter token="@token1@"/>
  <replacefilter token="@token2@"
                 value="value2"/>
  <replacefilter token="@token3@"
                 property="property.key"/>
  <replacefilter>
    <replacetoken>@token4@</replacetoken>
    <replacevalue>value4</replacevalue>
  </replacefilter>
</replace>

注記: token/<replacetoken>およびvalue/<replacevalue>属性/要素、ネストされたreplacefilter要素、またはその両方を同じ操作で使用できます。