Replace

Description

Replaceタスクはディレクトリベースのタスクで、 選択したファイル中のある文字列を与えられた別の文字列に置換します。

行をまたがるテキストを置換したい場合は、 ネストした <replacetoken> 要素を使ってください。

The output file is only written if it differs from the existing file. This prevents spurious rebuilds based on unchanged files which have been regenerated by this task.

パラメータ

属性 説明 必須
file トークンを置換する対象ファイル 必ず 2 つのうちの 1つ
dir 複数ファイルの文字を置換するときに使われるベースディレクトリ
encoding 置換操作を行うファイルのエンコーディング No - デフォルトはデフォルトJVMのエンコーディング
token 置換されるトークン ネストした replacetoken 要素か replacefilterfile 属性を 使用しない限りYes
value トークンの新しい値。省略された場合は、空文字列 ("") が使用されます。 No
summary 置換操作が実行されたかのサマリー。 処理された文字列とファイルの数を表示します。 No, デフォルトではサマリーは表示されません
propertyFile 有効なプロパティーファイル。ネストした <replacefilter> 要素で使用されます。 <replacefilter>property 属性としてのみ Yes
replacefilterfile 有効なプロパティーファイル。 tokenと一致するプロパティーの 各プロパティーが replacefilter として扱われ、 valueはプロパティーの値となります。 No.
includes 包含しなければならないファイルのパターンのカンマかスペースで区切られたリスト。 省略した時には、すべてのファイルが含まれます。 No
includesfile ファイル名。 このファイルの各行は、 包含パターンとして解釈されます。 No
excludes 除外するファイルのパターンのコンマかスペース区切られたリスト。 省略時は(デフォルト除外集合を除いて)除外されるファイルはありません。 No
excludesfile ファイル名。 このファイルの各行は除外パターンとして解釈されます。 No
defaultexcludes デフォルト除外集合を使用するかどうか("yes"/"no") を指定します。省略したときにはデフォルト除外集合を使用します。 No

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

${src}/index.htmlファイルの中の出現した"@@@"文字列を"wombat"文字列で置換します。

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

このタスクは暗黙のFileSetを持っていて、 ネストした <include><exclude><patternset> 要素と同様に、 <fileset>属性のすべてをサポートします。

置換したい、または置換されるテキストのどちらかが行をまたがっている場合には、 それを指定するためにネストした要素を使用できます。

<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 検索する文字列 Yes
value 置換する文字列 どちらか一方。両方は不可。望むなら両方省略は可能。
property プロパティーの名前。プロパティーの値で置換されます。

もし valueproperty も使用されなければ、 <replace> 属性のvalue および/あるいは <replacevalue> 要素が 置換する値として使われます。 もし、これらのオプションのどれも使われていなければ、token は空文字列に置き換えられます。

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

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

Note: token/<replacetoken>value/<replacevalue> 属性/要素 の両方が、 ネストしたreplacefilter要素や同じ操作の中で 使用可能です。


Copyright © 2000-2004 The Apache Software Foundation. All rights Reserved.

[訳注:これは宮本信二,風間一洋の訳を参考に、横田聡が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]