条件は、<condition>タスクと<waitfor>タスクのネストされた要素です。コア条件とカスタム条件があります。カスタム条件については、カスタム条件に記載されています。コア条件については以下に説明します。
これらは、<condition>タスクと<waitfor>タスクで条件として使用できるネストされた要素です。
<not>要素は、正確に1つの他の条件をこの要素にネストすることを期待し、条件の結果を否定します。属性はなく、条件タスクのすべてのネストされた要素をネストされた要素として受け入れます。
<and>要素は属性を持たず、任意の数の条件をネストされた要素として受け入れます。条件タスクのすべてのネストされた要素がサポートされます。この条件は、含まれるすべての条件が真である場合に真になります。条件は、ビルドファイルに指定された順序で評価されます。
<and>条件は、Javaの&&演算子と同じショートカットセマンティクスを持ちます。ネストされた条件の1つが偽になると、他の条件は評価されません。
<or>要素は属性を持たず、任意の数の条件をネストされた要素として受け入れます。条件タスクのすべてのネストされた要素がサポートされます。この条件は、含まれる条件の少なくとも1つが真である場合に真になります。条件は、ビルドファイルに指定された順序で評価されます。
<or>条件は、Javaの||演算子と同じショートカットセマンティクスを持ちます。ネストされた条件の1つが真になると、他の条件は評価されません。
<xor>要素は、Javaの^演算子と同様に、すべてのネストされた要素に対して排他的論理和を実行します。ネストされた条件が奇数個真である場合にのみ真になります。<and>および<or>テストとは異なり、評価のショートカットはありません。属性はなく、条件タスクのすべてのネストされた要素をネストされた要素として受け入れます。
この条件は、Availableタスクと同一です。そのタスクのすべての属性とネストされた要素がサポートされます。property属性とvalue属性は冗長であり、無視されます。
この条件は、Uptodateタスクと同一です。そのタスクのすべての属性とネストされた要素がサポートされます。property属性とvalue属性は冗長であり、無視されます。
現在のオペレーティングシステムが特定のタイプであるかどうかをテストします。定義された各属性がテストされ、すべてのテストが成功した場合のみ、結果はtrueになります。
| 属性 | 説明 | 必須 |
|---|---|---|
| family | 期待するオペレーティングシステムファミリの名称。 | いいえ |
| name | 期待するオペレーティングシステムの名称。 | いいえ |
| arch | 期待するオペレーティングシステムのアーキテクチャ。 | いいえ |
| version | 期待するオペレーティングシステムのバージョン。 | いいえ |
family属性でサポートされる値は次のとおりです。
windows—すべてのバージョンのMicrosoft Windows
dos—Microsoft WindowsやOS/2を含む、すべてのMicrosoft DOSベースのオペレーティングシステム
mac—Mac OS X以前のすべてのApple Macintoshシステム
unix—LinuxやMac OS X/macOSを含む、すべてのUnix(様)オペレーティングシステム
netware—Novell NetWare
os/2—OS/2
tandem—HPのNonStop Kernel(旧Tandem)
win9x—Microsoft Windows 95、98、ME、CE
winnt—Windows 2000、XP、および後継者を含む、Microsoft Windows NTベースのシステム
z/os—z/OSおよびOS/390
os/400—OS/400
openvms—OpenVMS
2つの指定された値が等しいかどうかをテストします。
| 属性 | 説明 | 必須 |
|---|---|---|
| arg1 | テストする最初の値。 | はい |
| arg2 | テストする2番目の値。 | はい |
| casesensitive | 大文字と小文字を区別して比較を実行します。 | いいえ。デフォルトはtrue |
| trim | 比較する前に、引数から空白をトリムします。 | いいえ。デフォルトはfalse |
| forcestring | arg1/arg2の文字列比較を強制します。Apache Ant 1.8.1以降 | いいえ。デフォルトはfalse |
このプロジェクトで指定されたプロパティが設定されているかどうかをテストします。
| 属性 | 説明 | 必須 |
|---|---|---|
| property | テストするプロパティの名前。 | はい |
この条件は、Checksumタスクと同一です。そのタスクのすべての属性とネストされた要素がサポートされます。property属性とoverwrite属性は冗長であり、無視されます。
http条件は、指定されたURLのWebサーバーからの有効な応答を確認します。デフォルトでは、400以上のHTTP応答エラーは無効と見なされます。
| 属性 | 説明 | 必須 |
|---|---|---|
| url | 要求するページの完全なURL。Webサーバーは、errorsBeginAtの値以下のステータスコードを返す必要があります。 | はい |
| errorsBeginAt | エラーを示す最低のHTTP応答コード。サーバーエラー、権限なし、見つからないなど検出されます。 | いいえ。デフォルトは400 |
| requestMethod | リクエスト発行時に使用するHTTPメソッド。GET、 POST、 HEAD、 OPTIONS、 PUT、 DELETE、 TRACEのいずれかが有効で、プロトコル制限に従います。 Ant 1.8.0以降 |
いいえ。デフォルトはGET |
| followRedirects | リダイレクトをフォローするかどうか。 Ant 1.9.7以降 |
いいえ。デフォルトはtrue |
| readTimeout | ターゲットURLからの読み取り中に使用される読み取りタイムアウト(ミリ秒単位)。0以上の値を受け入れます。0の値は、無期限に待機することを意味します。-1未満の値は無視されます。 Ant 1.10.6以降 |
いいえ。デフォルトは0 |
socket条件は、指定されたホストとポートでTCP/IPリスナーが存在するかどうかを確認します。
| 属性 | 説明 | 必須 |
|---|---|---|
| server | サーバーのDNS名またはIPアドレス。 | はい |
| port | 接続するポート番号。 | はい |
2つのファイルが一致するかどうかをテストします。一方のファイルが存在しない場合、結果はfalse
になります。ただし、どちらも存在しない場合は、コンテンツに関して等しいと見なされます。このテストはバイト単位の比較を実行するため、テスト時間はバイトサイズに合わせて変化します。注記:ファイルのサイズが異なる場合、一方のファイルが存在しない場合、またはファイル名が一致する場合は、答えは非常に明確なため、詳細なテストは省略されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| file1 | テストする最初のファイル。 | はい |
| file2 | テストする2番目のファイル。 | はい |
| textfile | ファイルを比較するときに改行を無視するかどうか。Ant 1.7以降 | いいえ。デフォルトはfalseで、バイナリ比較がトリガーされます。 |
文字列が別の文字列を含むかどうかをテストします。
| 属性 | 説明 | 必須 |
|---|---|---|
| string | 検索する文字列。 | はい |
| substring | 検索する文字列。 | はい |
| casesensitive | 大文字と小文字を区別して比較を実行します。 | いいえ。デフォルトはtrue |
文字列がAntのtrueの定義(つまりtrue
、yes
、またはon
)のいずれかに等しいかどうかをテストします。
| 属性 | 説明 | 必須 |
|---|---|---|
| value | テストする値。 | はい |
<istrue value="${someproperty}"/>
<istrue value="false"/>
文字列がtrueでないかどうかをテストします。<istrue>の否定。
| 属性 | 説明 | 必須 |
|---|---|---|
| value | テストする値。 | はい |
<isfalse value="${someproperty}"/>
<isfalse value="false"/>
このプロジェクトで指定された参照が定義されているかどうか、および(オプションで)期待されるタイプかどうかをテストします。
Apache Ant 1.6以降.
| 属性 | 説明 | 必須 |
|---|---|---|
| refid | テストする参照のid。 | はい |
| type | この参照が期待されるデータ型またはタスクの名前。 | いいえ |
jarファイルが署名されているかどうかをテストします。署名名が渡された場合、その特定の署名が存在するかどうかでファイルがチェックされます。そうでない場合、署名が存在するかどうかでファイルがチェックされます。厳格な署名検証は実行されません。署名が存在するかどうかだけを確認します。
Apache Ant 1.7以降.
| 属性 | 説明 | 必須 |
|---|---|---|
| file | 署名が存在するかどうかをテストするjarファイル。 | はい |
| name | 確認する署名名。 | いいえ |
ファイルが埋め込まれたセレクターを通過するかどうかをテストします。
Apache Ant 1.6.3以降.
| 属性 | 説明 | 必須 |
|---|---|---|
| file | 埋め込まれたセレクターを通過するかどうかを確認するファイル。 | はい |
| basedir | 名前ベースのセレクターに使用するベースディレクトリ。これが設定されていない場合、プロジェクトのbasedirが使用されます。 | いいえ |
使用例
<isfileselected file="a.xml"> <date datetime="06/28/2000 2:02 pm" when="equal"/> </isfileselected>
指定された型が定義されており、その実装クラスを読み込むことができるかどうかをテストします。型には、タスク、データ型、スクリプト定義、マクロ定義、およびプリセット定義が含まれます。
Apache Ant 1.7以降.
| 属性 | 説明 | 必須 |
|---|---|---|
| name | 型の名称 | はい |
| uri | この型が存在するURI。 | いいえ |
使用例
<typefound name="junit"/> <typefound uri="antlib:org.apache.maven.artifact.ant" name="artifact"/>
任意のApache BSFまたはJSR 223でサポートされている言語のスクリプトに基づいて条件を評価します。
スクリプトと依存関係の説明については、スクリプトタスクを参照してください。
Apache Ant 1.7以降.
| 属性 | 説明 | 必須 |
|---|---|---|
| language | スクリプト言語 | はい |
| manager | 使用するスクリプトエンジンマネージャー。この属性の使用については、scriptタスクを参照してください。 | いいえ。デフォルトはauto |
| value | デフォルトのブール値 | いいえ。デフォルトはfalse |
| src | スクリプトソースのファイル名 | いいえ |
| encoding | スクリプトソースのエンコード。Ant 1.10.2以降。 | いいえ。デフォルトはJVMのデフォルト文字エンコード。 |
| setbeans | すべてのプロパティ、参照、ターゲットをスクリプトのグローバル変数として扱うかどうか。Ant 1.8.0以降 | いいえ。デフォルトはtrue |
| classpath | スクリプトに渡すクラスパス。 | いいえ |
| classpathref | 使用するクラスパス。他の場所で定義されたパスへの参照として指定されます。 | いいえ |
このネストされた要素の使用については、scriptタスクを参照してください。
スクリプトはスクリプト言語をインラインでサポートします。このスクリプトは、<script>タスクと同じBeanと、条件自体を参照するself Beanにアクセスできます。スクリプトがブール値の結果として評価された場合、これは条件の評価の結果です(Ant 1.7.1以降)。または、self.valueを使用して評価結果を設定できます。
例
<scriptcondition language="javascript"
value="true">
self.setValue(false);
</scriptcondition>
条件のデフォルト値をtrue
に設定した後、スクリプト内で値をfalse
に設定します。この条件は常にfalse
と評価されます。
SAX/JAXP仕様に従って、適切なプロパティ/フィーチャの設定を試みることで、AntのXMLパーサーが特定のフィーチャまたはプロパティをサポートしているかどうかをテストします。
Apache Ant 1.7以降.
| 属性 | 説明 | 必須 |
|---|---|---|
| property | 設定するプロパティ | 2つのうちいずれか1つ |
| フィーチャ | 設定するフィーチャ | |
| value | 文字列(プロパティ)またはブール値(フィーチャ) | プロパティテストの場合。フィーチャテストの場合ではありません。 |
<parsersupports feature="http://xml.org/sax/features/namespaces"/>
名前空間サポートをチェックします。すべてのSAX2パーサーがこれを備えている必要があります。
<or>
<parsersupports
feature="https://apache.dokyumento.jp/xml/features/validation/schema"/>
<parsersupports
feature="http://java.sun.com/xml/jaxp/properties/schemaSource"/>
</or>
XMLスキーマサポートをチェックします。
<parsersupports property="https://apache.dokyumento.jp/xml/properties/schema/external-noNamespaceSchemaLocation" value="document.xsd"/>
名前空間のないスキーマの場所に関するXerces固有の定義をチェックします。
Java 5以降のネットワークAPIを使用して、(リモート)システムに到達できるかどうかを調査します。使用されるプローブメカニズムは、JVMの実装機能です。「ping」パケット、ポート7「エコーサービス」へのUDPまたはTCP接続、その他の手段が含まれる場合があります。
この条件では、不明なホスト例外は偽の条件に変換されます。これは、ラップトップでは、ネットワークが切断されるとDNSが最初のサービスの1つであるため、暗黙的にオフラインになるためです。
hostの代わりにURLが指定されている場合、ホスト名が抽出され、テストで使用されます。URLのその他の部分はすべて破棄されます。
ファイアウォールを通じたテストは機能しない可能性があります。つまり、HTTPなどのプロトコルを使用して到達できるものがある一方で、下位レベルのICMPパケットが破棄される可能性があります。同様に、ICMPを使用して到達可能と検出されたホストでも、ファイアウォールのために他のポート(つまり、ポート80)では到達できない場合があります。
Apache Ant 1.7以降.
| 属性 | 説明 | 必須 |
|---|---|---|
| host | 確認するホスト | 2つのうちいずれか1つ |
| url | ホスト名を含むURL | |
| timeout | タイムアウト(秒) | いいえ。デフォルトは30 |
<condition property="offline"> <isreachable url="https://ibiblio.org/maven/"/> </condition>
Mavenリポジトリに到達できるかどうかを調査します。
<condition property="offline"> <isreachable host="ibiblio.org" timeout="10"/> </condition>
ホスト名を使用して、10秒のタイムアウトでMavenリポジトリに到達できるかどうかを調査します。
Ant 1.6.3以降
この条件は、Lengthタスクの一面です。文字列または1つ以上のファイルの長さをテストするために使用されます。
<length string=" foo " trim="true" length="3"/>
文字列が特定の長さであることを確認します。
<length file="foo" when="greater" length="0"/>
ファイルfooが空でないことを確認します。
Ant 1.7以降
実行可能ファイルの戻りコード(Execタスクを参照)が失敗かどうかをテストします。
| 属性 | 説明 | 必須 |
|---|---|---|
| code | テストする戻りコード。 | はい |
Ant 1.7以降
この条件は、ResourceCountタスクの一面です。リソースコレクションのサイズをテストするために使用されます。
<resourcecount refid="myresourcecollection" when="greater" count="0"/>
リソースコレクションが空でないことを確認します。
Ant 1.7以降
一致するリソースをテストします。1つ以上のリソースが存在しない場合、false
になります。ただし、存在しないリソースがない場合は、コンテンツの点で等しいと見なされます。デフォルトでは、このテストはバイト単位で比較を行うため、テスト時間はバイトサイズに比例します。**注:** ファイルのサイズが異なる場合、ファイルのいずれかが欠落している場合、またはファイル名が一致する場合は、答えが明らかであるため、詳細なテストは省略されます。確認するリソースは、ネストされたリソースコレクションとして指定されるため、2つ以上のリソースを確認できます。この場合、すべてのリソースが一致する必要があります。
| 属性 | 説明 | 必須 |
|---|---|---|
| astext | リソースのコンテンツを比較する際に改行を無視するかどうか。trueはバイナリ比較をトリガーします。 |
いいえ。デフォルトはfalse |
Ant 1.7.1以降
リソースが特定の(サブ)文字列を含んでいるかどうかをテストします。
確認するリソースは、参照を介して、またはファイルリソースの場合、resource属性を介して指定されます。
| 属性 | 説明 | 必須 |
|---|---|---|
| resource | テスト対象のリソースであるファイルの名前。 | 2つのうちいずれか1つ |
| refid | プロジェクト内で定義されたリソースへの参照。 | |
| substring | 検索する文字列。 | はい |
| casesensitive | 大文字と小文字を区別して比較を実行します。 | いいえ。デフォルトはtrue |
Ant 1.7以降
クラスにメソッドまたはフィールドがあるかどうかをテストします。クラスが見つからない場合、または読み込みに失敗した場合、ビルドは失敗します。
| 属性 | 説明 | 必須 |
|---|---|---|
| classname | 読み込むクラスの名前 | yes |
| field | 探すフィールドの名前 | 2つのうちいずれか1つ |
| method | 探すメソッドの名前 | |
| ignoreSystemClasses | システムクラスを無視する必要がありますか? | いいえ。デフォルトはfalse |
| classpath | クラスパス | いいえ |
| classpathref | クラスパスへの参照 | いいえ |
クラスパスを指定するために使用できるネストされた<classpath>要素もあります。
<hasmethod classname="java.util.ArrayList" method="trimToSize"/>
java.util.ArrayListクラスでtrimToSize()メソッドを探します。
Ant 1.7以降
指定された文字列が指定された正規表現パターンに一致するかどうかをテストします。
| 属性 | 説明 | 必須 |
|---|---|---|
| string | テストする文字列。 | はい |
| pattern | テストに使用される正規表現パターン。 | はい。ネストされた<regexp>要素がない限り。 |
| casesensitive | 大文字と小文字を区別した一致を実行します。 | いいえ。デフォルトはtrue |
| multiline | 複数行の一致を実行します。 | いいえ。デフォルトはfalse |
| singleline | これにより、.が改行と一致するようになります。SingleLineを複数行と混同しないでください。SingleLineはPerl正規表現の用語であり、Java正規表現のdotallに対応します。 |
いいえ。デフォルトはfalse |
pattern属性の代わりに正規表現を指定するために使用できるオプションの<regexp>要素もあります。ネストされた要素regexpと正規表現実装の選択については、Regexp Typeを参照してください。
例
<condition property="legal-password">
<matches pattern="[1-9]" string="${user-input}"/>
</condition>
<fail message="Your password should at least contain one number"
unless="legal-password"/>
次の例では、プロパティinputが3文字の長さで、「a」で始まり「b」で終わる場合に、プロパティokを設定します。
<condition property="ok">
<matches string="${input}" pattern="^a.b$"/>
</condition>
次の例では、日付の一致のための参照正規表現を定義し、antunitを使用してプロパティtodayが正しい形式かどうかをチェックします。
<regexp id="date.pattern" pattern="^[0123]\d-[01]\d-[12]\d\d\d$"/>
<au:assertTrue xmlns:au="antlib:org.apache.ant.antunit">
<matches string="${today}">
<regexp refid="date.pattern"/>
</matches>
</au:assertTrue>
次の例では、singlelineフラグとcasesensitiveフラグの使用方法を示します。
<au:assertTrue>
<matches string="AB${line.separator}C" pattern="^ab.*C$"
casesensitive="false"
singleline="true"/>
</au:assertTrue>
<au:assertFalse>
<matches string="AB${line.separator}C" pattern="^ab.*C$"
casesensitive="false"
singleline="false"/>
</au:assertFalse>
この条件はAntversionタスクと同一であり、すべての属性がサポートされます。property属性は冗長であり、無視されます。
Ant 1.7.0以降
パーティションに十分な空き容量があるかどうかをテストします。
必要な属性は、標準的なコンピューティング用語を使用して指定できます。
| 属性 | 説明 | 必須 |
|---|---|---|
| partition | 空き容量を確認するパーティションまたはファイルシステム | はい |
| needed | 必要な空き容量。 | はい |
例
<hasfreespace partition="c:" needed="100M"/>
Ant 1.8.0以降
リソースの最終変更日をテストします。
| 属性 | 説明 | 必須 |
|---|---|---|
| millis | 1970年1月1日午前0時からのミリ秒単位で、リソースの期待される変更時間を指定します。 | 2つのうちいずれか1つ |
| datetime | リソースの期待される変更時間を指定します。nowという特別な値は現在時刻を示します。 |
|
| pattern | SimpleDateFormat互換のパターン文字列。 | いいえ。デフォルトはMM/dd/YYYY hh:mm aまたは MM/dd/YYYY hh:mm:ss a |
| mode | タイムスタンプの比較方法。許容される値はequals、 before、 not-before、 after、 not-afterです。 | いいえ。デフォルトはequals |
テスト対象の実際の資源は、ネストされた要素として指定されます。
例
<islastmodified dateTime="08/18/2009 04:41:19 AM" mode="not-before">
<file file="${file}"/>
</islastmodified>
Ant 1.8.0以降
リソースの存在をテストします。
テスト対象の実際の資源は、ネストされた要素として指定されます。
例
<resourceexists>
<file file="${file}"/>
</resourceexists>
Ant 1.10.2以降
Antを実行しているJVMのバージョンをテストします。
| 属性 | 説明 | 必須 |
|---|---|---|
| atleast | このJVMが少なくともそのバージョンであること。形式はmajor.minor.pointです。Java 9以降は、実際にはメジャー番号のみが決定されます。 |
3つのうちいずれか1つ |
| atmost | このJVMが最大限にそのバージョンであること。形式はmajor.minor.pointです。Java 9以降は、実際にはメジャー番号のみが決定されます。Ant 1.10.10以降 |
|
| exactly | このJVMが正確にそのバージョンであること。形式はmajor.minor.pointです。Java 9以降は、実際にはメジャー番号のみが決定されます。 |
例
<javaversion atleast="9"/>
現在のJVMがJava 9以上の場合、trueと評価されます。