Property

説明

プロジェクト内のプロパティ(名前と値による)、あるいはプロパティ(ファイルまたはリソースからの)のセットを設定します。 プロパティは大文字と小文字を区別します。


プロパティは不変です: プロパティを最初にセットする人は残りのビルドのためにプロパティを凍結します; プロパティは明らかに可変ではありません。

プロパティをセットするには、次の5つの方法があります:

これらの方法を組み合わせることは可能ですが、一度に一つだけ使用されるべきです。 例えば、プロパティがセットされる順番で問題が生じるかもしれません。

セットされているプロパティの値の一部は、他のプロパティへの参照を含んでいるかもしれません。 これらの参照は、プロパティがセットされる時に解決されます。 これは、さらにプロパティファイルからロードされたプロパティにも適用できます。

あらかじめ定義されたプロパティのリストは ここで見つけることができます。here.

OpenVMSユーザ

このタスクは、environment属性によって、 OpenVMSシステム上ですべての定義を正しく読込みます。 複数の等価な名前の論理は、等価な名前のカンマ区切りのリストの値として、プロパティにマップされます。 複数のテーブルで論理が定義されているとき、最もローカルな定義が利用できます。 (テーブルの優先度は、PROCESS, JOB, GROUP, SYSTEMの順です。)

パラメータ

属性 説明 必須
name 設定するプロパティの名前です。 No
value プロパティの値です。 name 属性が使われている時に、これら三つのうちの一つが必須
location プロパティに指定されたファイルの絶対ファイル名を設定します。 この属性の値が絶対パスの場合には、それは変更されません ( / と \ は現在のプラットフォームの慣習に合わせて変換されます)。 そうでなければ、プロジェクトの basedir への相対パスとして解釈され、拡張されます。
refid 別の場所で定義したオブジェクトへの参照PATH 類似構造やプロパティへの参照だけが適切です。
resource プロパティファイルのリソース名です。 name 属性が使われていない時に、これら三つのうちの一つが必須
file プロパティファイルのファイル名です。
url 読込むプロパティのurlです。
environment 環境変数を読み取るときに使うプレフィックスです。 従って、あなたが environment="myenv" と指定した場合には、 OS 固有の環境変数に "myenv.PATH" または "myenv.TERM" というプロパティ名でアクセスすることができるでしょう。 注意していただきたいのは、もしプロパティ名の最後に "." を付加した場合は、それは重複しないという事です。 例えば、 "environment=myenv." としたら、 "myenv.PATH" にも "myenv.TERM" にもアクセスすることが許されます。 この機能は、現在のところ一部のプラットフォームでのみ実装されています。 この機能がサポートされたプラットフォームを増やす為のパッチを送る事は歓迎します;)。
あなたのオペレーティング・システム上の環境変数がそうでなくても、このプロパティは大文字と小文字を区別する事に注意して下さい。例えば、 Windows 2000 上では ${env.PATH} ではなく ${env.Path} となります。
classpath リソースを見つける時に使われるクラスパスです。 No
classpathref 他の場所で定義された <path> への参照として与えられる、 リソースを見つける時に使われるクラスパスです。 No
prefix file または resource を使用してロードされたプロパティに適用するための接頭辞。 もし指定されなければ "." が接頭辞に追加されます。 No

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

classpath

Propertyclasspath 属性は PATH 類似構造 です。 さらに、それは入れ子の classpath 要素によってセットすることができます。

  <property name="foo.dist" value="dist"/>

プロパティ foo.dist に値 "dist" を設定します。

  <property file="foo.properties"/>

"foo.properties" という名前のファイルからプロパティのセットを読み込みます。

  <property url="http://www.mysite.com/bla/props/foo.properties"/>

"http://www.mysite.com/bla/props/foo.properties"というアドレスからプロパティのセットを読み込みます。

  <property resource="foo.properties"/>

"foo.properties" という名前のリソースからプロパティのセットを読み込みます。

以下のようにすることで、 Ant のすべてのビルドのグローバルなプロパティファイルを参照することができることに注意してください。

  <property file="${user.home}/.ant-global.properties"/>

"user.home" プロパティは、あなたのホームディレクトリになるように Java 仮想マシンによって定義されています。 "user.home"プロパティがファイルシステム内のどこかは、OSのバージョンとJVM実装に依存します。 Unixベースのシステムでは、ユーザホームディレクトリにマップします。 最近のWindowsでは、"Documents and Settings"フォルダ内のユーザディレクトリになります。 Windows 98/MEのような古いWindowsでは、一方のOS/JVMの組み合わせで、予想しづらいです。

  <property environment="env"/>
  <echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/>
  <echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>

システム環境変数を読んで、プレフィックス "env" で始まるプロパティに格納します。 この機能は選ばれたオペレーティングシステムでだけ動作することに注意して下さい。 echo によって二つの値が表示されます。

プロパティファイル

上記のとおり、このタスクは、ファイルシステムかクラスパス上のリソースに保存されたプロパティファイルを読込みます。 この機能には、いくつかの興味深い事実があり、
  1. ファイルがなければ、-verboseのログレベル以外出力されません。 これは、プロジェクトごとに任意の設定ファイルを持ち、チームメンバーがカスタマイズすることができます。
  2. フォーマットのルールは Sunの下に置かれます。 これは、バグレポートの処理を困難にさせます。
  3. 後続のスペースが削除されない。それが必要であるかもしれません。
  4. 普通でない文字が必要なら、\u0456や\"のようなスタイルでエスケープします。
  5. Antプロパティはファイル内で拡張されます。
プロパティの拡張はとってもクールです。覚えて使ってください。

例:

build.compiler=jikes
deploy.server=lucky
deploy.port=8080
deploy.url=http://${deploy.server}:${deploy.port}/

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

[訳注:これは西野亨、高崎俊史の訳を参考に、横田聡が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]