Ant の実行

コマンドライン

Antのインストールで述べたように Ant をインストールしたら、 Ant をコマンドラインから実行するのはとても簡単です: 単にantと入力するだけです。

引数が指定されなかった場合、 Ant はカレントディレクトリの build.xml ファイルを探し、あれば、 それをビルドファイルとして使い、 <project>タグの default 属性で指定されたターゲットを実行します。 Ant でbuild.xmlでないビルドファイルを使うには、 -buildfile file コマンドラインオプションを使います。 ここで、file は使いたいビルドファイル名です。

-find [file] オプションを使った場合、 最初に Ant はカレントディレクトリでビルドファイルを探し、 次に親ディレクトリで探し、順次その上をビルドファイルが見つかるか、 ファイルシステムのルートに到達するまで探します。 デフォルトでは、build.xmlという名前のビルドファイルが検索されます。 build.xml以外のビルドファイルを探させる場合には、 ファイル引数を指定します。 注意: コマンドラインで -findフラグの後ろに 何か別のフラグまたは引数をつけた場合、 探したいファイルがbuild.xmlだったとしても、 -findのためにファイル引数をつけなければなりません。

コマンドラインでプロパティも設定できます。 これは、 -Dproperty=value オプションで行うことができます。 ここで、propertyはプロパティ名であり、 valueはプロパティの値です。 ビルドファイルでも設定されているプロパティを指定した場合 (property タスクをご覧ください) コマンドラインで指定された値は、 ビルドファイルで指定した値を上書きします。 コマンドラインでのプロパティ指定は環境変数の値を渡すのにも使われます。 - 単に -DMYVAR=%MYVAR% (Windows) や -DMYVAR=$MYVAR (Unix) をAntにわたします。 そうすれば、これらの変数は自分のビルドファイルから ${MYVAR} としてアクセスできます。 環境変数は property タスクの environment 属性を使ってアクセスすることもできます。

Antのログの出力の量に影響するオプションは次の通りです: -quiet はコンソールに少ない情報を出すように指示します; -verbose は Ant が付加的な情報をコンソールに出力するようにします; そして、 -debug は Ant が、より多くの付加的な情報を出力するようにします。

実行されるターゲットを一つ以上指定することも可能です。 省略された場合、 projectタグの default属性で指定されたターゲットが使われます。

-projecthelp オプションは、 そのビルドファイルのターゲットの一覧を出力します。 description属性のあるターゲットは "メインターゲット"として一覧表示され、 descriptionが無いものは "サブターゲット"として一覧表示され、 そして、"デフォルト"ターゲットが表示されます。

コマンドラインオプションの要約

ant [options] [target [target2 [target3] ...]]
Options:
  -help, -h              このメッセージを表示
  -projecthelp, -p       プロジェクトヘルプ情報を表示
  -version               バージョン情報の表示して終了
  -diagnostics           診断や問題のレポートに役立つ情報を表示
  -quiet, -q             さらにメッセージを少なく
  -verbose, -v           さらにメッセージを多く
  -debug, -d             デバッグ情報を表示
  -emacs, -e             装飾無しのログ情報を生成
  -lib <path>            jarやクラスを検索するパスを指定
  -logfile <file>        ログを指定ファイルに出力
    -l     <file>                ''
  -logger <classname>    ログ生成を実行するためのクラス
  -listener <classname>  プロジェクトリスナーとしてクラスのインスタンスを追加  
  -noinput               対話的入力を許可しない
  -buildfile <file>      指定されたビルドファイルの使用
    -file    <file>              ''
    -f       <file>              ''
  -D<property>=<value>   指定したプロパティーの値を使用
  -keep-going, -k        失敗したターゲット(複数)に依存しないターゲットを全て実行
  -propertyfile <name>   全てのプロパティをファイルからロード。
                               -Dで指定したプロパティーより優先されます。
  -inputhandler <class>  入力リクエストを扱うクラス
  -find <file>           ビルドファイルをファイルシステムのルートに向かい
    -s  <file>           検索(search)して利用

-logger-listener についての詳しい情報は、 ロガーとリスナーを参照してください。

-inputhandler についての詳しい情報は、 InputHandlerを参照してください。。

ライブラリ依存関係

Ant 1.6 より前は、Antを実行するのに、ANT_HOME/lib 以下のすべての jar がCLASSPATHに追加されていました。 これは、Antを起動するスクリプトで行われていました。 Ant 1.6 からは、デフォルトで、2つのディレクトリがスキャンされ、必要であれば追加できます。 スキャンされるデフォルトディレクトリは、ANT_HOME/lib で、ユーザーごとディレクトリは、 ${user.home}/.ant/lib です。 この取り決めは、多くのユーザーで、Antのインストールを共用することを可能にし、 またそれぞれのユーザーが追加のjarをデプロイすることを可能にします。 これらのjarは、ビルドで使われる、Antのオプショナルタスクのためのjarや、 サードパーティのタスクを含むjar がサポートされます。 メインのAntのインストールをシステム管理者にたのむことをロックダウンすることを 可能にします。※?

検索対象の追加ディレクトリは、-libオプションを使って追加されます。 -libオプションは検索パスを指定します。 検索パスのディレクトリjarやクラスはAntのクラスローダーに追加されます。 どのjarがクラスパスに追加されるかの順番は次のようになります。

-libオプションを使ってCLASSPATH環境変数がAntにわたされることに注意してください。 Ant自身は最小のクラスパスで開始されます。

${user.home}/.ant/lib の位置は、JVMにいくらか依存しています。 Unixシステムでは、${user.home} はユーザーのホームディレクトリにマップされます。 対して、Windowsの最近の最近のバージョンは、 C:\Documents and Settings\username\.ant\lib といった場所になります。 詳細はJVMのドキュメントを調べてください。

ant

カレントディレクトリにあるbuild.xml を用いてデフォルトターゲットに対し Ant を実行します。

ant -buildfile test.xml

カレントディレクトリにあるtest.xml を用いてデフォルトターゲットに対し Ant を実行します。

ant -buildfile test.xml dist

カレントディレクトリにあるtest.xml を用いてdistという名前のターゲットに対し Ant を実行します。

ant -buildfile test.xml -Dbuild=build/classes dist

カレントディレクトリにあるtest.xml を用いてdistという名前のターゲットに対し buildプロパティに値 build/classes を設定して Ant を実行します。

ant -lib /home/ant/extras

/home/ant/extras の位置から追加のタスクや jarを拾って Antを実行します。

ファイル

Unix 用 Ant ラッパースクリプトでは、何かする前に ~/.antrcファイルをソース(読み込み、および評価)します。 Windows では、Ant ラッパーバッチファイルは、 起動直後に %HOME%\antrc_pre.bat を実行し、終了前に %HOME%\antrc_post.bat を実行します。 例えば、これらのファイルを、 Ant の実行中のみ参照可能な環境変数を設定/設定解除するのに使えます。 次の節で例を示します。

環境変数

ラッパースクリプトは(設定されていれば)次の環境変数を使います:

Java システムプロパティー

いくつかのAntのコアクラスとタスクは、システムプロパティーで設定ができます。

ここでは、コードベースを検索した結果を示します。 システムプロパティーは、Projectインスタンスを通して有効になるので、

    grep -r -n "getPropert" * > ..\grep.txt
コマンドで検索しました。 その後、よく使われるが、それほど重要ではない次の値(ほとんどはリードオンリーの値) を除外しました: path.separator、 ant.home、 basedir、 user.dir、 os.name、 ant.file、 line.separator、 java.home、 java.version、 java.version、 user.home、 java.class.path
また、getPropertyHelperでアクセスしているものを除外しました。

プロパティー名 有効な値 / デフォルトの値 説明
ant.input.properties ファイル名 (必須) PropertyFileInputHandler の値を保持するファイルの名前
ant.logger.defaults ファイル名 (オプション、デフォルトは'/org/ apache/ tools/ ant/ listener/ defaults.properties') AnsiColorLogger のカラーマッピングを保持するファイルの名前
ant.netrexxc.* いくつかのフォーマット netrexxc のデフォルトの値を指定するのに使用
ant.PropertyHelper Antの参照名(オプション) 利用する PropertyHelper を指定。 指定するオブジェクトは、org.apache.tools.ant.PropertyHelper 型である必要があります。 @AYAC org.apache.tools.ant.PropertyHelper のオブジェクトが指定されなかった場合、 PropertyHelper として利用されます。
ant.regexp.regexpimpl クラス名 正規表現実装のクラス名。 セットされなければ、Antは他のものを探そうとします (Jdk14、Oro...)。 RegExp-Mapper "正規表現実装の選択"
ant.reuse.loader boolean org.apache.tools.ant.util.ClasspathUtil で使われる クラスローダーの再利用を許可します。
ant.XmlLogger.stylesheet.uri ファイル名 (デフォルトは 'log.xsl') XmlLogger の logfile で使われるスタイルシートの名前
build.compiler 名前 利用するデフォルトのコンパイラを指定。 javacEJB タスク (compiler 属性)、 IContractjavah を参照してください。
build.compiler.emacs boolean (デフォルトは false) emacs 互換のエラーメッセージを有効にするか。 javac "Jikes Notes" を参照してください。
build.compiler.fulldepend boolean (デフォルトは false) 依存性のフルチェックを有効にするか。 javac "Jikes Notes" を参照してください。
build.compiler.jvc.extensions boolean (デフォルトは true) javaコンパイラのMicrosoft 拡張を有効にするか。 javac "Jvc Notes" を参照してください。
build.compiler.pedantic boolean (デフォルトは false) 厳格な警告を有効にするか。 javac "Jikes Notes" を参照してください。
build.compiler.warnings 非推奨フラグ javac "Jikes Notes" を参照してください。
build.rmic 名前 rmic コンパイラの制御
build.sysclasspath "only"、あるいは他のもの only: カレントスレッドが現在のクラスローダーを取得する (AntClassLoader.setThreadContextLoader())。 他のもの: デフォルトでコアのローダーが利用される (ComponentHelper.initTasks())。 クラスローダーの変更は無効 (oata.taskdefs.Classloader.execute() 実験的タスク)。
file.encoding サポートされる文字セットの名前(UTF-8, ISO-8859-1, US-ASCII など) emailのメッセージのデフォルトの文字セットとして利用される。 source-、 dest- や translate の bundleencoding のデフォルトとして利用。
文字セットについての詳細は、 java.nio.charset.Charset のJavaDocを参照してください (Antでは使わていませんが、よい文書があります)。
jikes.class.path パス コンパイラに jikes が使われている場合、 指定したパスがクラスパスに追加されます。
MailLogger.properties.file, MailLogger.* ファイル名(オプション、デフォルトでは Project インスタンスから取得されます) MailLogger で emailの送信のプロパティーを保持するファイルの名前。 プロパティーの集合は、ビルドファイル中で、あるいはコマンドライン引数で、 上書きされます。
org.apache.tools.ant.ProjectHelper クラス名 (オプション、デフォルトは'org. apache. tools. ant. ProjectHelper') ProjectHelper として使われるクラス名を指定。 指定するクラスは、org.apache.tools.ant.ProjectHelper を継承している必要があります。
p4.port, p4.client, p4.user いくつかのフォーマット perforce タスクの port-、 client- や user-setting の デフォルト値を指定。
websphere.home パス websphere のホームディレクトリを指定。 EJB タスク を参照してください。
XmlLogger.file ファイル名 (デフォルトは 'log.xml') MailLogger の logfile の名前。

Cygwin ユーザー

UnixのAnt用の起動スクリプトはCygwinで正しく動作します。 Cywgin のシェルからAntを起動するのに何も問題はありません。 しかしながら、次の記述は重要です。 一度、Ant が実行されたら、それは、 ネイティブの Windows アプリケーションとして実行されるJDKの一部となります。 JDK はCygwin の実行形式ではなく、 それゆえ、Cygwinのパスなどについての情報を持ちません。 特に <exec> タスクを利用する場合は、 CygwinのシェルからAntが起動されたとしても、 "/bin/sh" といった実行コマンドは動作しません。 Windows のパス上に存在するコマンドを使って "sh" といった実行コマンドを使うことができます。

OS/2 ユーザー

OS/2 の起動スクリプトは、複雑なタスクが実行できるように開発されました。 起動スクリプトには、2つの部分があります。 ant.cmd はAntを呼び出し、 antenv.cmd はAntの環境をセットします。 ほとんどの場合は、上で述べたのと同じコマンドラインオプションを使って、 単に ant.cmd を呼ぶだけです。 次のいくつかの方法で、この振る舞いは変更することができます。

スクリプト ant.cmd は 最初にAnt の環境が正しくセットされるかを 検査します。次のことが必要です:

  1. 環境変数 JAVA_HOME がセットされている。
  2. 環境変数 ANT_HOME がセットされている。
  3. 環境変数 CLASSPATH がセットされていて、 少なくとも 1つの JAVA_HOME の要素と 少なくとも 1つのANT_HOME の要素 が含まれている。

もし、これらの条件のどれかに違反している場合、 antenv.cmd が呼ばれます。 このスクリプトは最初に、存在すれば次の設定スクリプトを実行します: システム範囲の設定、%ETC%ディレクトリのantconf.cmd、 それからユーザー設定、%HOME% ディレクトリのantrc.cmd。 このとき、JAVA_HOMEANT_HOME は 定義済である必要があります。 なぜなら、 antenv.cmd はここで classes.ziptools.jar (JVMのバージョンに依存) を追加し、 %ANT_HOME%\libant-*.jar 以外のすべてを CLASSPATH に追加するからです。 最後に、ant.cmd は ディレクトリごとの設定ファイル、antrc.cmd を呼びます。 ant.cmd による全ての設定はローカルであり、 スクリプトが終了したときは解除されます。 antenv.cmd による設定は、シェルの存在時間中は、持続されます (もちろん自動的に ant.cmd を呼ばないかぎり)。 このように、antenv.cmd を手動で呼び出し、 ant.cmd を呼ぶ前にいくつかの設定を更新することが可能です。

スクリプト envset.cmdrunrc.cmd は補助のタスクが実行されます。 すべてのスクリプトは中にドキュメントがあります。

Java による Ant の実行

Ant を自分でコンパイルしてインストールした場合、 次の2つの方法でAntを起動できます:

java -Dant.home=c:\ant org.apache.tools.ant.Main [options] [target]
java -Dant.home=c:\ant org.apache.tools.ant.launch.Launcher [options] [target]

最初の方法は、Antの伝統的なエントリーポイントです。 2つ目の方法は、Ant 1.6 で取り入れられた Ant Launcher を使います。 前者は、-lib オプションをサポートしておらず、全ての必要なクラスは CLASSPATH から ロードされます。 この方法では、全ての必要な jar が存在することを保障しなければなりません。 最小でも、CLASSPATH には次のものを含む必要があります:

後者の方法は、-lib オプションをサポートしており、 指定した ANT_HOME から jar をロードされます。 最も小さなクラスパス、通常 ant-launcher.jar だけで 起動すればよいでしょう。



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

[訳注:これは漆島賢二、宮本信二が翻訳しました。日本語訳に対するコメントがあれば こちらに送ってください]