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 | 除外する必要があるファイルのパターンのカンマまたはスペース区切りリスト。 | いいえ。デフォルトはデフォルトの除外、またはdefaultexcludesがnoの場合は除外なし。 |
| 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以降、このタスクは、ネストされた要素として、ファイルシステムベースのリソースコレクションをサポートします。
置換するテキストまたは置換テキストが改行を跨いでいる場合は、ネストされた要素を使用して指定できます。
これらの要素は属性をサポートします。
| 属性 | 説明 | 必須 |
|---|---|---|
| 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>要素により、プロパティファイルから置換値を取得できます。このファイルの名前は、<replace>属性propertyFileを使用して指定されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| token | 検索する文字列。 | はい。ネストされたreplacetokenが指定されている場合を除く。 |
| value | 置換文字列。 | どちらか一方を指定できますが、両方同時に指定することはできません。必要に応じて、どちらも省略できます。 |
| property | 置換値として使用するプロパティの名前。 |
Ant 1.8.0以降、tokenとvalueは、タスク自体と同様にネストされた要素として指定できます。
valueもpropertyも使用されていない場合、<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要素、またはその両方を同じ操作で使用できます。