プロジェクトにプロパティ(名前と値で指定)またはプロパティのセット(ファイルまたはリソースから)を設定します。プロパティは大文字と小文字を区別します。
プロパティは不変です。最初にプロパティを設定した人は、ビルドの残りの部分でそれを固定します。プロパティは決して変数ではありません。
プロパティを設定するには7つの方法があります
name
属性と、value
またはlocation
属性のいずれかを指定します。name
属性とネストされたテキストを指定します。name
属性とrefid
属性の両方を指定します。file
属性にロードするプロパティファイルのファイル名を設定します。このプロパティファイルは、java.util.Properties
クラスで使用されるファイルと同じ形式で、非ISO-8859-1文字のエスケープ方法に関する同じルールが適用されます。url
属性にプロパティをロードするURLを設定します。このURLは、java.util.Properties
クラスで使用されるファイルと同じ形式のファイルを指している必要があります。resource
属性にロードするプロパティファイルのリソース名を設定します。リソースは、現在のクラスパスまたは指定されたクラスパスにあるプロパティファイルです。environment
属性に使用するプレフィックスを設定します。指定された名前とピリオドを変数名に付加することにより、すべての環境変数に対してプロパティが定義されます。runtime
属性に使用するプレフィックスを設定します。プロパティprefix.availableProcessors
、prefix.freeMemory
、prefix.totalMemory
、およびprefix.maxMemory
は、Runtimeクラスの対応するメソッドによって返される値で定義されます。これらの方法の組み合わせは可能ですが、一度に1つだけを使用する必要があります。たとえば、プロパティが設定される順序に問題が発生する可能性があります。
設定されるプロパティの値の部分には、他のプロパティへの参照が含まれている場合があります。これらの参照は、これらのプロパティが設定された時点で解決されます。これは、プロパティファイルからロードされたプロパティにも当てはまります。
定義済みプロパティのリストはこちらにあります。
Apache Ant 1.8.0以降、Java 5以降で実行している場合、Sun DTDに従ってXMLで定義されたプロパティをロードできます。そのためには、ファイル、リソース、またはURLの名前が.xmlで終わる必要があります。
属性 | 説明 | 必須 |
---|---|---|
name | 設定するプロパティの名前。 | いいえ |
value | プロパティの値。 | name 属性が設定されている場合は、これらのいずれかまたはネストされたテキスト |
location | プロパティを指定されたファイルの絶対ファイル名に設定します。この属性の値が絶対パスである場合、変更されません(「/」と「\」文字は現在のプラットフォームの規則に変換されます)。それ以外の場合は、プロジェクトのbasedir を基準とした相対パスと見なされ、展開されます。 |
|
refid | 他の場所で定義されたオブジェクトへの参照。パスのような構造またはプロパティへの参照に対してのみ、妥当な結果が得られます。 | |
resource | プロパティファイル形式のプロパティ設定を含むクラスパスリソースの名前。 | name 属性が設定されていない限り、これらのいずれか1つ |
file | ロードするプロパティファイルの場所。 | |
url | プロパティ形式の設定を含むURL。 | |
environment | 環境変数を取得するときに使用するプレフィックス。したがって、environment = "myenv"を指定すると、プロパティ名myenv.PATH またはmyenv.TERM を介してOS固有の環境変数にアクセスできます。末尾に「.」が付いたプロパティname を指定した場合、それは2倍になりません。つまり、environment = "myenv."とすると、myenv.PATH およびmyenv.TERM を通じて環境変数にアクセスできます。この機能は現在、選択したプラットフォームでのみ実装されています。この機能がサポートされているプラットフォームの数を増やすためのパッチを遠慮なく送信してください;-)。また、オペレーティングシステムの環境変数では大文字と小文字が区別されない場合でも、プロパティでは大文字と小文字が区別されることに注意してください。たとえば、Windows 2000以降のシステムパス変数は、 env.PATH ではなくenv.Path という名前のAntプロパティに設定されます。 |
|
runtime | ランタイムプロパティを取得するときに使用するプレフィックス。したがって、runtime = "myrt"を指定すると、プロパティ名myrt.availableProcessors 、myrt.maxMemory 、myrt.totalMemory 、またはmyrt.freeMemory を介して、Runtimeクラスのメソッドに対応するランタイム値にアクセスできます。末尾に「.」が付いたプロパティ名を指定した場合、それは2倍になりません。つまり、runtime = "myrt."とすると、myrt.maxMemory などのランタイムプロパティにアクセスできます。また、プロパティ値は、 property が実行された時点のスナップショットであることにも注意してください。_Ant 1.10.4以降_ |
|
classpath | リソースを検索するときに使用するクラスパス。 | いいえ |
classpathref | リソースを検索するときに使用するクラスパス。他の場所で定義された<path> への参照として指定されます。 |
いいえ |
prefix | file 、resource 、またはurl を使用してロードされたプロパティに適用するプレフィックス。指定されていない場合、「.」がプレフィックスに追加されます。 |
いいえ |
prefixValues | file 、resource 、またはurl を使用してロードされたプロパティの右側を展開するときにプレフィックスを適用するかどうか。_Ant 1.8.2以降_ |
いいえ;デフォルトは「false」です |
relative | 「true」に設定すると、basedir への相対パスが設定されます。_Ant 1.8.0以降_ |
いいえ;デフォルトは「false」です |
basedir | 相対パスの計算元のbasedir 。_Ant 1.8.0以降_ |
いいえ;デフォルトはプロジェクトのbasedir です |
environment
属性を使用すると、このタスクはOpenVMSシステムで定義されているすべての論理をロードします。複数の等価名を持つ論理は、値がすべての等価名のカンマ区切りリストであるプロパティにマップされます。論理が複数のテーブルで定義されている場合、最もローカルな定義のみが使用可能です(テーブルの優先順位はPROCESS、JOB、GROUP、SYSTEMです)。
*Ant 1.8.2以降*、AntがJava 5以降で実行されていることを検出した場合、Antは独自のOS依存ネイティブ実装ではなく、System.getenv()
を使用します。一部のOSでは、これにより、古いバージョンのAntと比較してわずかな違いが生じます。完全なリストについては、Bugzilla Issue 49366を参照してください。特に
PROMPT
)がなくなっていることを報告しました。BEGINLIBPATH
変数を返さなくなりました。Property
のclasspath
属性はパスのような構造であり、ネストされたclasspath
要素を介して設定することもできます。
プロパティfoo.dist
を値「dist」に設定します。
<property name="foo.dist" value="dist"/>
プロパティfoo.dist
を値「dist」に設定します。
<property name="foo.dist">dist</property>
foo.propertiesというファイルからプロパティのセットを読み取ります。
<property file="foo.properties"/>
アドレスhttps://www.mysite.com/bla/props/foo.propertiesからプロパティのセットを読み取ります。
<property url="https://www.mysite.com/bla/props/foo.properties"/>
foo.propertiesというリソースからプロパティのセットを読み取ります。
<property resource="foo.properties"/>
次を使用して、すべてのAntビルドのグローバルプロパティファイルを参照できることに注意してください
<property file="${user.home}/.ant-global.properties"/>
user.home
プロパティはJVMによってホームディレクトリとして定義されているためです。 user.home
プロパティがファイルシステムのどこに解決されるかは、オペレーティングシステムのバージョンとJVMの実装によって異なります。 Unixベースのシステムでは、これはユーザーのホームディレクトリにマップされます。最新のWindowsバリアントでは、これはおそらくDocuments and SettingsまたはUsersフォルダー内のユーザーのディレクトリに解決されます。 Windows 98 / MEなどの古いWindowsバリアントは、他のオペレーティングシステム/ JVMの組み合わせと同様に、予測できません。
システム環境変数を読み取り、「env」というプレフィックスを付けてプロパティに格納します。これは、_選択した_オペレーティングシステムでのみ機能することに注意してください。値の2つがエコーされていることが示されています。
<property environment="env"/> <echo message="Number of Processors = ${env.NUMBER_OF_PROCESSORS}"/> <echo message="ANT_HOME is set to = ${env.ANT_HOME}"/>
このビルドファイルは、build.propertiesで定義されているプロパティを使用します。環境変数STAGE
に関して、一部またはすべての値が上書きされる可能性があります。たとえば、STAGE = test
とtest.propertiesがある場合、それに対する特別な値(テストサーバーの別の名前など)があります。最終的に、これらの値はすべて、ユーザーごとのファイルによる個人の設定で上書きできます。
<property environment="env"/> <property file="${user.name}.properties"/> <property file="${env.STAGE}.properties"/> <property file="build.properties"/>
相対パスをfoo
に格納します:../my/file.txt
<property name="foo" location="my/file.txt" relative="true" basedir=".."/>
相対パスをfoo
に格納します:cvs/my/file.txt
<property name="foo" location="my/file.txt" relative="true" basedir="cvs"/>
述べたように、このタスクはファイルシステムに格納されているプロパティファイル、またはクラスパスのリソースとしてロードします。この機能に関する興味深い事実を以下に示します
\u0456
または\"
スタイルでエスケープします。prefix
属性を使用する場合、プロパティを展開するときも同じプレフィックスを使用するか、prefixValues
を「true」に設定する必要があります。ファイル内プロパティの展開は非常に便利です。その使用方法を学びましょう。
例
build.compiler=jikes deploy.server=lucky deploy.port=8443 deploy.url=https://${deploy.server}:${deploy.port}/
Antが環境変数からのプロパティの設定をサポートし始めたとき、System.getEnv
が機能しないJava 1.2で実行されていました。そこで、環境変数を出力し、出力を分析してプロパティを作成する新しいプロセスでコマンドを開始することにしました。 Java 5を必要とするようになったAnt 1.9.0では、一部のプラットフォームで異なる結果が返されたとしても、System.getEnv
に戻しました。以下で説明するコマンドは、OpenVMSで使用されるか、System.getEnv
が例外をスローした場合に引き続き使用されます。
Execute.java の `getProcEnvCommand()` メソッドには、以下のオペレーティングシステム向けのコマンドが実装されています。
OS | コマンド |
---|---|
OS/2 | `cmd /c set` |
Windows | |
* Win9x 系 | `command.com /c set` |
* その他 | `cmd /c set` |
`cmd /c set` (Windows NT 系) | z/OS |
`/bin/env` **または** `/usr/bin/env` **または** `env` (読み取り権限に依存) | z/OS |
Unix | `env` |
NetWare | `env` |
`env` | OS/400 |