条件

条件は、<condition>タスクと<waitfor>タスクのネストされた要素です。コア条件とカスタム条件があります。カスタム条件については、カスタム条件に記載されています。コア条件については以下に説明します。

コア条件

これらは、<condition>タスクと<waitfor>タスクで条件として使用できるネストされた要素です。

not

<not>要素は、正確に1つの他の条件をこの要素にネストすることを期待し、条件の結果を否定します。属性はなく、条件タスクのすべてのネストされた要素をネストされた要素として受け入れます。

and

<and>要素は属性を持たず、任意の数の条件をネストされた要素として受け入れます。条件タスクのすべてのネストされた要素がサポートされます。この条件は、含まれるすべての条件が真である場合に真になります。条件は、ビルドファイルに指定された順序で評価されます。

<and>条件は、Javaの&&演算子と同じショートカットセマンティクスを持ちます。ネストされた条件の1つが偽になると、他の条件は評価されません。

or

<or>要素は属性を持たず、任意の数の条件をネストされた要素として受け入れます。条件タスクのすべてのネストされた要素がサポートされます。この条件は、含まれる条件の少なくとも1つが真である場合に真になります。条件は、ビルドファイルに指定された順序で評価されます。

<or>条件は、Javaの||演算子と同じショートカットセマンティクスを持ちます。ネストされた条件の1つが真になると、他の条件は評価されません。

xor

<xor>要素は、Javaの^演算子と同様に、すべてのネストされた要素に対して排他的論理和を実行します。ネストされた条件が奇数個真である場合にのみ真になります。<and>および<or>テストとは異なり、評価のショートカットはありません。属性はなく、条件タスクのすべてのネストされた要素をネストされた要素として受け入れます。

available

この条件は、Availableタスクと同一です。そのタスクのすべての属性とネストされた要素がサポートされます。property属性とvalue属性は冗長であり、無視されます。

uptodate

この条件は、Uptodateタスクと同一です。そのタスクのすべての属性とネストされた要素がサポートされます。property属性とvalue属性は冗長であり、無視されます。

os

現在のオペレーティングシステムが特定のタイプであるかどうかをテストします。定義された各属性がテストされ、すべてのテストが成功した場合のみ、結果はtrueになります。

属性 説明 必須
family 期待するオペレーティングシステムファミリの名称。 いいえ
name 期待するオペレーティングシステムの名称。 いいえ
arch 期待するオペレーティングシステムのアーキテクチャ。 いいえ
version 期待するオペレーティングシステムのバージョン。 いいえ

family属性でサポートされる値は次のとおりです。

equals

2つの指定された値が等しいかどうかをテストします。

属性 説明 必須
arg1 テストする最初の値。 はい
arg2 テストする2番目の値。 はい
casesensitive 大文字と小文字を区別して比較を実行します。 いいえ。デフォルトはtrue
trim 比較する前に、引数から空白をトリムします。 いいえ。デフォルトはfalse
forcestring arg1/arg2の文字列比較を強制します。Apache Ant 1.8.1以降 いいえ。デフォルトはfalse

isset

このプロジェクトで指定されたプロパティが設定されているかどうかをテストします。

属性 説明 必須
property テストするプロパティの名前。 はい

checksum

この条件は、Checksumタスクと同一です。そのタスクのすべての属性とネストされた要素がサポートされます。property属性とoverwrite属性は冗長であり、無視されます。

http

http条件は、指定されたURLのWebサーバーからの有効な応答を確認します。デフォルトでは、400以上のHTTP応答エラーは無効と見なされます。

属性 説明 必須
url 要求するページの完全なURL。Webサーバーは、errorsBeginAtの値以下のステータスコードを返す必要があります。 はい
errorsBeginAt エラーを示す最低のHTTP応答コード。サーバーエラー、権限なし、見つからないなど検出されます。 いいえ。デフォルトは400
requestMethod リクエスト発行時に使用するHTTPメソッド。GETPOSTHEADOPTIONSPUTDELETETRACEのいずれかが有効で、プロトコル制限に従います。
Ant 1.8.0以降
いいえ。デフォルトはGET
followRedirects リダイレクトをフォローするかどうか。
Ant 1.9.7以降
いいえ。デフォルトはtrue
readTimeout ターゲットURLからの読み取り中に使用される読み取りタイムアウト(ミリ秒単位)。0以上の値を受け入れます。0の値は、無期限に待機することを意味します。-1未満の値は無視されます。
Ant 1.10.6以降
いいえ。デフォルトは0

socket

socket条件は、指定されたホストとポートでTCP/IPリスナーが存在するかどうかを確認します。

属性 説明 必須
server サーバーのDNS名またはIPアドレス。 はい
port 接続するポート番号。 はい

filesmatch

2つのファイルが一致するかどうかをテストします。一方のファイルが存在しない場合、結果はfalseになります。ただし、どちらも存在しない場合は、コンテンツに関して等しいと見なされます。このテストはバイト単位の比較を実行するため、テスト時間はバイトサイズに合わせて変化します。注記:ファイルのサイズが異なる場合、一方のファイルが存在しない場合、またはファイル名が一致する場合は、答えは非常に明確なため、詳細なテストは省略されます。

属性 説明 必須
file1 テストする最初のファイル。 はい
file2 テストする2番目のファイル。 はい
textfile ファイルを比較するときに改行を無視するかどうか。Ant 1.7以降 いいえ。デフォルトはfalseで、バイナリ比較がトリガーされます。

contains

文字列が別の文字列を含むかどうかをテストします。

属性 説明 必須
string 検索する文字列。 はい
substring 検索する文字列。 はい
casesensitive 大文字と小文字を区別して比較を実行します。 いいえ。デフォルトはtrue

istrue

文字列がAntのtrueの定義(つまりtrueyes、またはon)のいずれかに等しいかどうかをテストします。

属性 説明 必須
value テストする値。 はい
<istrue value="${someproperty}"/>
<istrue value="false"/>

isfalse

文字列がtrueでないかどうかをテストします。<istrue>の否定。

属性 説明 必須
value テストする値。 はい
<isfalse value="${someproperty}"/>
<isfalse value="false"/>

isreference

このプロジェクトで指定された参照が定義されているかどうか、および(オプションで)期待されるタイプかどうかをテストします。

Apache Ant 1.6以降.

属性 説明 必須
refid テストする参照のid はい
type この参照が期待されるデータ型またはタスクの名前。 いいえ

issigned

jarファイルが署名されているかどうかをテストします。署名名が渡された場合、その特定の署名が存在するかどうかでファイルがチェックされます。そうでない場合、署名が存在するかどうかでファイルがチェックされます。厳格な署名検証は実行されません。署名が存在するかどうかだけを確認します。

Apache Ant 1.7以降.

属性 説明 必須
file 署名が存在するかどうかをテストするjarファイル。 はい
name 確認する署名名。 いいえ

isfileselected

ファイルが埋め込まれたセレクターを通過するかどうかをテストします。

Apache Ant 1.6.3以降.

属性 説明 必須
file 埋め込まれたセレクターを通過するかどうかを確認するファイル。 はい
basedir 名前ベースのセレクターに使用するベースディレクトリ。これが設定されていない場合、プロジェクトのbasedirが使用されます。 いいえ

使用例

<isfileselected file="a.xml">
  <date datetime="06/28/2000 2:02 pm" when="equal"/>
</isfileselected>

typefound

指定された型が定義されており、その実装クラスを読み込むことができるかどうかをテストします。型には、タスク、データ型、スクリプト定義、マクロ定義、およびプリセット定義が含まれます。

Apache Ant 1.7以降.

属性 説明 必須
name 型の名称 はい
uri この型が存在するURI。 いいえ

使用例

<typefound name="junit"/>
<typefound uri="antlib:org.apache.maven.artifact.ant" name="artifact"/>

scriptcondition

任意の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 使用するクラスパス。他の場所で定義されたパスへの参照として指定されます。 いいえ
ネストされた要素として指定されたパラメーター
classpath

このネストされた要素の使用については、scriptタスクを参照してください。

説明

スクリプトはスクリプト言語をインラインでサポートします。このスクリプトは、<script>タスクと同じBeanと、条件自体を参照するself Beanにアクセスできます。スクリプトがブール値の結果として評価された場合、これは条件の評価の結果です(Ant 1.7.1以降)。または、self.valueを使用して評価結果を設定できます。

<scriptcondition language="javascript"
        value="true">
    self.setValue(false);
</scriptcondition>

条件のデフォルト値をtrueに設定した後、スクリプト内で値をfalseに設定します。この条件は常にfalseと評価されます。

parsersupports

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固有の定義をチェックします。

isreachable

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リポジトリに到達できるかどうかを調査します。

length

Ant 1.6.3以降

この条件は、Lengthタスクの一面です。文字列または1つ以上のファイルの長さをテストするために使用されます。

<length string=" foo " trim="true" length="3"/>

文字列が特定の長さであることを確認します。

<length file="foo" when="greater" length="0"/>

ファイルfooが空でないことを確認します。

isfailure

Ant 1.7以降

実行可能ファイルの戻りコード(Execタスクを参照)が失敗かどうかをテストします。

属性 説明 必須
code テストする戻りコード。 はい

resourcecount

Ant 1.7以降

この条件は、ResourceCountタスクの一面です。リソースコレクションのサイズをテストするために使用されます。

<resourcecount refid="myresourcecollection" when="greater" count="0"/>

リソースコレクションが空でないことを確認します。

resourcesmatch

Ant 1.7以降

一致するリソースをテストします。1つ以上のリソースが存在しない場合、falseになります。ただし、存在しないリソースがない場合は、コンテンツの点で等しいと見なされます。デフォルトでは、このテストはバイト単位で比較を行うため、テスト時間はバイトサイズに比例します。**注:** ファイルのサイズが異なる場合、ファイルのいずれかが欠落している場合、またはファイル名が一致する場合は、答えが明らかであるため、詳細なテストは省略されます。確認するリソースは、ネストされたリソースコレクションとして指定されるため、2つ以上のリソースを確認できます。この場合、すべてのリソースが一致する必要があります。

属性 説明 必須
astext リソースのコンテンツを比較する際に改行を無視するかどうか。trueはバイナリ比較をトリガーします。 いいえ。デフォルトはfalse

resourcecontains

Ant 1.7.1以降

リソースが特定の(サブ)文字列を含んでいるかどうかをテストします。

確認するリソースは、参照を介して、またはファイルリソースの場合、resource属性を介して指定されます。

属性 説明 必須
resource テスト対象のリソースであるファイルの名前。 2つのうちいずれか1つ
refid プロジェクト内で定義されたリソースへの参照。
substring 検索する文字列。 はい
casesensitive 大文字と小文字を区別して比較を実行します。 いいえ。デフォルトはtrue

hasmethod

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()メソッドを探します。

matches

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

この条件はAntversionタスクと同一であり、すべての属性がサポートされます。property属性は冗長であり、無視されます。

hasfreespace

Ant 1.7.0以降

パーティションに十分な空き容量があるかどうかをテストします。

必要な属性は、標準的なコンピューティング用語を使用して指定できます。

属性 説明 必須
partition 空き容量を確認するパーティションまたはファイルシステム はい
needed 必要な空き容量。 はい

<hasfreespace partition="c:" needed="100M"/>

islastmodified

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 タイムスタンプの比較方法。許容される値はequalsbeforenot-beforeafternot-afterです。いいえ。デフォルトはequals

テスト対象の実際の資源は、ネストされた要素として指定されます。

<islastmodified dateTime="08/18/2009 04:41:19 AM" mode="not-before">
  <file file="${file}"/>
</islastmodified>

resourceexists

Ant 1.8.0以降

リソースの存在をテストします。

テスト対象の実際の資源は、ネストされた要素として指定されます。

<resourceexists>
  <file file="${file}"/>
</resourceexists>

javaversion

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と評価されます。