PropertyFile


はじめに

Apache Ant は、プロパティファイルを編集するためのオプションのタスクを提供します。これは、アプリケーションサーバーやアプリケーションの構成ファイルに自動的に変更を加えたい場合に非常に便利です。現在、このタスクは、プロパティを追加したり、既存のプロパティを変更したりする機能を備えた、作業用のプロパティファイルを維持します。*Ant 1.8.0 以降*、元のプロパティファイルのコメントとレイアウトは保持されます。

*Ant 1.8.2 以降*、使用されているスタイルが一貫している限り、元のファイルの改行スタイルも保持されます。一般的に、更新されたファイルの改行は、読み取り時に最初に見つかった改行と同じになります。


PropertyFile タスク

パラメータ

属性 説明 必須
file 編集するプロパティファイルの場所 はい
comment ファイル自体のヘッダー いいえ
jdkproperties java.lang.Properties を使用します。これにより、ファイルのコメントとレイアウトが失われます。*Ant 1.8.0 以降* いいえ; デフォルトは「false」

ブール属性 jdkproperties は、タスクによってプロパティファイルのレイアウトとコメントが失われていた、タスクの以前の動作を復元するために提供されています。

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

Entry

ネストされた <entry> 要素を使用して、プロパティファイル自体への実際の変更を指定します。

属性 説明 必須
key プロパティ名/値ペアの名前 はい
value 設定する値(「=」)、追加する値(「+」)、または減算する値(「-」) operation が「del」でない場合は、少なくとも1つを指定する必要があります
default プロパティがプロパティファイルにまだ定義されていない場合に設定する初期値。
タイプ date の場合は、追加のキーワード「now」が許可されます。
type 値を以下のように見なします。「int」、「date」、または「string」(デフォルト) いいえ; デフォルトは「string」
operation 以下の操作のいずれか
すべてのデータ型の場合
  • 「del」: エントリを削除します
  • 「+」: 既存の値に値を追加します
  • 「=」: 既存の値の代わりに値を設定します(デフォルト)
date および int のみの場合
  • 「-」: 既存の値から値を減算します
いいえ; デフォルトは「=」
pattern int および date タイプの場合のみ。存在する場合、値はそれに応じて解析およびフォーマットされます。 いいえ
unit date の「+」/「-」操作に適用される値の単位。有効な値は次のとおりです。
  • millisecond(ミリ秒)
  • second(秒)
  • minute(分)
  • hour(時間)
  • 「day」(日)(デフォルト)
  • week(週)
  • month(月)
  • year(年)
これは、「+」/「-」操作を使用する 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 に変更されました。