Apache Ant は、プロパティファイルを編集するためのオプションのタスクを提供します。これは、アプリケーションサーバーやアプリケーションの構成ファイルに自動的に変更を加えたい場合に非常に便利です。現在、このタスクは、プロパティを追加したり、既存のプロパティを変更したりする機能を備えた、作業用のプロパティファイルを維持します。*Ant 1.8.0 以降*、元のプロパティファイルのコメントとレイアウトは保持されます。
*Ant 1.8.2 以降*、使用されているスタイルが一貫している限り、元のファイルの改行スタイルも保持されます。一般的に、更新されたファイルの改行は、読み取り時に最初に見つかった改行と同じになります。
| 属性 | 説明 | 必須 |
|---|---|---|
| file | 編集するプロパティファイルの場所 | はい |
| comment | ファイル自体のヘッダー | いいえ |
| jdkproperties | java.lang.Properties を使用します。これにより、ファイルのコメントとレイアウトが失われます。*Ant 1.8.0 以降* |
いいえ; デフォルトは「false」 |
ブール属性 jdkproperties は、タスクによってプロパティファイルのレイアウトとコメントが失われていた、タスクの以前の動作を復元するために提供されています。
ネストされた <entry> 要素を使用して、プロパティファイル自体への実際の変更を指定します。
| 属性 | 説明 | 必須 |
|---|---|---|
| key | プロパティ名/値ペアの名前 | はい |
| value | 設定する値(「=」)、追加する値(「+」)、または減算する値(「-」) | operation が「del」でない場合は、少なくとも1つを指定する必要があります |
| default | プロパティがプロパティファイルにまだ定義されていない場合に設定する初期値。 タイプ date の場合は、追加のキーワード「now」が許可されます。 | |
| type | 値を以下のように見なします。「int」、「date」、または「string」(デフォルト) | いいえ; デフォルトは「string」 |
| operation | 以下の操作のいずれか すべてのデータ型の場合
|
いいえ; デフォルトは「=」 |
| pattern | int および date タイプの場合のみ。存在する場合、値はそれに応じて解析およびフォーマットされます。 | いいえ |
| unit | date の「+」/「-」操作に適用される値の単位。有効な値は次のとおりです。
|
いいえ; デフォルトは「day」 |
プロパティ値を設定するときに使用されるルールを以下に示します。操作は、これらのルールが考慮された**後**に発生します。
以下は、my.properties ファイルを変更します。my.properties が次のようになっていると想定します。
# A string value akey=original value # The following is a counter, which will be incremented by 1 for # each time the build is run. anint=1
実行後、ファイルは次のようになります。
#My properties #Wed Aug 31 13:47:19 BST 2005 # A string value akey=avalue # The following is a counter, which will be incremented by 1 for # each time the build is run. anint=2 adate=2005/08/31 13\:47 formated.int=0014 formated.date=243 13\:47
スラッシュは、Properties クラスの期待に準拠しています。ファイルは、各文字が検査され、必要に応じてエスケープされるように保存されます。
元のファイルのレイアウトとコメントは保持されます。新しいプロパティはファイルの最後に追加されます。既存のプロパティは、その場で上書きされます。
<propertyfile file="my.properties"
comment="My properties">
<entry key="akey" value="avalue"/>
<entry key="adate" type="date" value="now"/>
<entry key="anint" type="int" default="0" operation="+"/>
<entry key="formated.int" type="int" default="0013" operation="+" pattern="0000"/>
<entry key="formated.date" type="date" value="now" pattern="DDD HH:mm"/>
</propertyfile>
今日からの相対日付を生成するには
<propertyfile file="my.properties"
comment="My properties">
<entry key="formated.date-1"
type="date" default="now" pattern="DDD"
operation="-" value="1"/>
<entry key="formated.tomorrow"
type="date" default="now" pattern="DDD"
operation="+" value="1"/>
</propertyfile>
文字列の連結
<propertyfile file="my.properties"
comment="My properties">
<entrykey="progress" default="" operation="+" value="."/>
</propertyfile>
呼び出されるたびに、「.」が progress に追加されます
プロジェクトのバージョンを次のマイナーバージョンに上げます(マイナーを増加させ、patch=0 に設定します)
<target name="nextMinorVersion">
<property name="header"
value="##Generated file - do not modify!"/>
<propertyfile file="version.properties" comment="${header}">
<entry key="product.build.major" type="int" value="3"/>
<entry key="product.build.minor" type="int" operation="+"/>
<entry key="product.build.patch" type="int" value="0"/>
<entry key="product.build.date" type="date" value="now"/>
</propertyfile>
</target>
このターゲットを実行した後、バージョンはたとえば 3.2.2 から 3.3.0 に変更されました。