|
Ant日本語ドキュメント
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Antユーザマニュアル
著 Version 1.2 - 2000/10/24 目次
はじめにAntはJavaベースのビルドツールです。 理論的には、makeの持っているような問題点を持たないmakeの一種です。 なぜ?すでにmakeや、gnumake、nmake、jamなどが存在する時代に、なぜ別のビルドツールが必要なのでしょうか? それは、複数のプラットフォームにまたがってソフトウェアを開発する時に、これらのツールのすべてが、そのオリジナルの著者が対応できなかった限界があるからです。 makeのようなツールは、本質的にシェルベースです。 それらは、依存性の集合を評価して、シェル上で実行するようにコマンドを実行します。 これは、あなたが仕事をしているOSに対して任意のプログラムを使用したり、書くことで、これらのツールを用意に拡張できることを意味しています。 しかし、これは同時に自分で仕事をするOSや、UnixのようなOSのタイプを限定してしまうことも意味します。 さらに、Makefileは本質的に良くありません。 それを使ったことがあるすべての人は、それがいつであっても、やっかいなタブの問題に直面したことがあるでしょう。 "タブの前に一個の空白があったために、私のコマンドが実行されない!!!"とAntのオリジナルの著者は何度も言い続けてきました。 Jamのようなツールは、この問題を大部分解消してくれますが、まだ別のフォーマットを使用しているので、それを覚える必要があります。 しかし、Antは違います。 シェルベースのコマンドを拡張したモデルの代わりに、Javaのクラスの使用方法を拡張します。 シェルコマンドを記述するかわりに、設定ファイルにさまざまな実行するタスクのターゲットツリーの呼び出しをXMLベースで記述します。 それぞれのタスクは、ある特別のTaskインターフェイスを実装したオブジェクトによって実行されます。 ただし、これは`find . -name foo -exec rm {}`のようなシェルコマンドが記述可能であることによって得られる表現力を削除することになりますが、かわりにクロスプラットフォーム性が得られます。 どこでも、どんな場所でも動作するわけです。 そして、シェルコマンドの実行が本当に必要な場合には、AntはOSによって異なるコマンドを許容して、それを実行する実行規則を持っています。 Antの入手バイナリ版Antの最新の安定したバージョンは、 http://jakarta.apache.org/builds/ant/release/v1.2/bin/からダウンロードできます。 不安定かもしれないバージョンを使ってみたい場合には、最新版がhttp://jakarta.apache.org/builds/ant/nightly/からダウンロードできます。 ソース版ソース版を選択したい場合には、Antを http://jakarta.apache.org/builds/ant/release/v1.2/src/ (最近の安定したバージョン)またはhttp://jakarta.apache.org/from-cvs/jakarta-ant/ (現在のバージョン)からダウンロードできます。 Antをソースコードからビルドする方法については、 Antのビルドの節を見てください。 システム要求条件Antをビルドして使用するためには、JAXP準拠のXMLパーザをインストールして、クラスパスから利用できる必要があります。 JAXP準拠のXMLパーザをインストールしていない場合には、Sunからリファレンス実装を入手することができます。 これは、http://java.sun.com/xmlから入手できます。 インストールした後に、"jaxp.jar"と"parser.jar"があなたのクラスパスに存在することを確認してください。 さらに、あなたのシステムにバージョン1.1以降のJDKをインストールする必要があります。 Antのビルドディレクトリ JDKが、パスに存在することを確認します。 JAVA_HOME環境変数を設定します。 これは、JDKをインストールしたディレクトリを設定しなければいけません。 あなたのOSでこれを設定する方法の例は、Antのインストールを参照してください。 Antのブートストラップバージョンをビルドするために、
終了してから、Windowsの場合には
を実行し、Unixの場合には
を実行して、Antのバイナリ版を作成します。 この配布は、あなたの指定したディレクトリで見つかります。 AntのインストールAntのバイナリ配布は、
WindowsAntを set ANT_HOME=c:\ant set JAVA_HOME=c:\jdk1.2.2 set PATH=%PATH%;%ANT_HOME%\bin Unix (bash)Antを export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.2.2
export PATH=${PATH}:${ANT_HOME}/bin
より詳しい情報Antは、さまざまな設定で使用できます。 少なくとも以下のような設定が必要になるでしょう。 Antのクラスパスは、 (javacタスクや、rmicタスクのような)JDKの機能が必要な時には、JDK 1.1ではJDKの (execタスクやcvsタスクのように)
プラットフォーム固有のアプリケーションを実行する時には、
プロパティ Antの実行前の節で述べたようにAntをインストールすれば、Antは実行は簡単です。
単に、 何も指定しなければ、Antはカレントディレクトリ中の さらに、ビルドファイルで指定したプロパティ(propertyタスクを参照)をオーバーライドするプロパティを設定することもできます。 これは、-D<プロパティ>=<値>オプションと一緒に実行すれば可能です。 なお、この<プロパティ>はプロパティ名で、<値>はその値です。 ちょうど-DMYVAR=%MYVAR% (Windows)や-DMYVAR=$MYVAR (Unix)のようにAntに渡すことで、これをあなたの環境変数にアクセスするために使用することも(そして、Javaは環境変数にアクセスできないので、これが唯一の方法です)できます。 さらにあなたのビルドファイル内では、${MYVAR}としてこれらの変数にアクセスすることができます。 さらに、 Antが実行中にコンソールにあまり情報を出力しないように指示する-quietと、 逆にAntが実行中にコンソールにもっと情報を出力するようにする-verboseとう2つのオプションがあります。 一つ以上の実行ターゲットを指定することもできます。 ターゲットを省略した時には、プロジェクトのdefault属性で指定されているターゲットを使用します。 -projecthelpオプションは、このプロジェクトのターゲットのリストを出力します。 最初に、解説付きのターゲットを、次に解説なしのターゲットを出力します。 以下に、コマンドラインオプションの概要を示します。 ant [options] [target [target2 [target3] ...]] Options: -help print this message -projecthelp print project help information -version print the version information and exit -quiet be extra quiet -verbose be extra verbose -debug print debugging information -emacs produce logging information without adornments -logfile <file> use given file for log -logger <classname> the class which is to perform logging -listener <classname> add an instance of class as a project listener -buildfile <file> use given buildfile -D<property>=<value> use value for given property 例ant これは、Antをカレントディレクトリ内の ant -buildfile test.xml これは、Antをカレントディレクトリ内の ant -buildfile test.xml dist これは、Antをカレントディレクトリ内の ant -buildfile test.xml -Dbuild=build/classes dist これは、Antをカレントディレクトリ内の Antの手動実行Antを自分自身の方法でインストールした時には、Antを次のように起動します。 java -Dant.home=c:\ant org.apache.tools.ant.Main [オプション] [ターゲット] この説明は、実際には
簡単なビルドファイルの記述ビルドファイルは、XMLで記述します。 各ビルドファイルは、一つのプロジェクトを含んでいます。 ビルドファイルのそれぞれの要素は、 プロジェクトプロジェクト(project)は、次の3つの属性を持っています。
各プロジェクトは、一つ以上のターゲットを定義します。 一つのターゲットは、あなたが実行したいタスクの集合です。 Antを起動した時に、どのターゲットを実行したいかを選択することができます。 ターゲットを指定しない場合には、そのプロジェクトのデフォルトが使用されます。 ターゲットターゲット(target)は、他のターゲットに依存することができます。 たとえば、コンパイルのためのターゲットと、配布を作成するためのターゲットがあるとします。 配布ターゲットがコンパイルターゲットに依存していれば、配布をビルドするだけで、最初にコンパイルすることができます。 Antは、これらの従属性を解決します。 Antは、depends属性のターゲットを、出現順(左から右に)実行しようとします。 次に示すように、早く出現するターゲットが他に依存している場合には、それを先に実行しようとすることができることを覚えておいてください。 <target name="A"/> <target name="B" depends="A"/> <target name="C" depends="B"/> <target name="D" depends="C,B,A"/> ターゲットDを実行したいと仮定します。 このdepends属性から、あなたは最初にターゲットCを、次にBを、そしてAを実行すると考えるかもしれません。 しかし、それは誤りです。 CはBに依存し、BはAに依存しているので、最初にA、次にB、次にC、そして最後にDを実行します。 ターゲットは、多くのターゲットがそれに依存している場合でさえも、一回だけ実行しようとします(前の例を見てください)。 ターゲットは、プロパティが設定されている(またはされていない)場合に、それを実行する能力も持っています。 たとえば、これによって、システムの状態(Javaのバージョン、OS、コマンドラインプロパティなど)に依存したビルドプロセスをよりうまく制御できるようになります。 ターゲットがこのプロパティを検出できるようにするためには、 ターゲットが反応しなければならないプロパティの名前を持つif (またはunless)属性を、次のように追加しなければいけません。 <target name="build-module-A" if="module-A-present"/><target name="build-own-fake-module-A" unless="module-A-present"/> ifとunless属性が存在しない場合には、ターゲットは常に実行されます。 すべての他のターゲットが依存している、いわゆる初期化ターゲットの中に あなたのtstampタスクを配置するのは、良い練習になるでしょう。 ターゲットが他のターゲットの依存リストの中で常に最初であることを確認してください。 このマニュアルでは、大部分の初期化ターゲットは、"init"という名前を持っています。 選択可能なdescription属性は、このターゲットに-projecthelpコマンドラインオプションを使用したときに印字される一行の説明を用意するために使用することができます。 ターゲットは、以下のような属性を持っています。
タスクタスクは、一つの実行可能なコードです。 タスクは、複数の属性(または、あなたが選んだ引数)を持つことができます。 属性の値は、プロパティに対する参照を含むことができます。 この属性の参照は、タスクが実行される前に解決されます。 タスクは、次のような共通の構造を持っています。 <name attribute1="value1" attribute2="value2" ... /> このnameはタスクの名前であり、attribute-xは属性名、そしてvalue-xはこの属性の値です。 これが組み込みタスクの集合ですが、独自のタスクを記述することも簡単です。 すべてのタスクは、 プロパティプロジェクトは、プロパティの集合を持つことができます。 これらは、propertyタスクによってビルドファイル中で設定されるかもしれませんし、Antの外で設定されるかもしれません。 プロパティは、名前と値を持っています。 プロパティは、タスクの属性の値で使用することができます。 これは属性の値の中で "${"と"}"の間にプロパティ名を書くことで可能です。 値"build"を持つ"builddir"と呼ぶプロパティが存在する場合には、属性内で "${builddir}/classes" のように使用することができます。 これは、"build/classes"として解決されます。 組み込みプロパティAntは、すべてのシステムプロパティに対して、 propertyタスクを使って定義してあるかのようにアクセスすることができます。 たとえば、${os.name}は、オペレーティングシステムの名前に展開されます。 さらに、Antは次のような組み込みプロパティを知っています。
例
トークンフィルタプロジェクトは、 これをサポートしているタスクでフィルタリング-コピーの動作が選択された場合には、 ファイルのコピー時にファイルが見つかれば、 自動的に展開することができるトークンの集合を持つことができます。 これはビルドファイル中で filterタスクを使って設定できます。 これは非常に有害な動作なので、ファイル中のトークンは@token@の形式でなければいけません。 tokenは、filterタスクで設定されたトークン名です。 このトークンの文法は、このようなフィルタリングを実行できる他のビルドシステムの文法と一致し、 大部分のプログラミング言語やスクリプト言語、及びドキュメンテーションシステムと直交しています。 注意: @token@の形式のトークンがファイル中に見つかっても、そのトークンに関連づけられたフィルタがない場合には、何も変更されません。 だから、エスケープする方法はありませんが、トークンに対して適切な名前を選択する限りにおいては、これが問題を引き起こすことはありません。 PATH類似構造":"と";"を区切り文字として使用したPATHとCLASSPATH変数を指定することができます。 Antは、それを現在のオペレーティングシステムの正しい文字に変換します。 PATHのような値を指定する時には、常にネストした要素が使用できます。 これは、次のような一般的な形式を取ります。
<classpath>
<pathelement path="${classpath}" />
<pathelement location="lib/helper.jar" />
</classpath>
pathとlocation属性をサポートしたPATH要素を理解する早道としては、
<classpath>
<pathelement path="${classpath}" />
</classpath>
は、次のように短縮することができます。
<classpath path="${classpath}" />
さらに、FileSetは、
ネストした
<classpath>
<pathelement path="${classpath}" />
<fileset dir="lib">
<include name="**/*.jar" />
</fileset;>
<pathelement location="classes" />
</classpath>
これは、 複数のタスクに同じPATH類似構造を使用したい場合には、
それらをtargetと同じレベルで
PATH類似構造は、ネストした
<path id="base.path">
<pathelement path="${classpath}" />
<fileset dir="lib">
<include name="**/*.jar" />
</fileset;>
<pathelement location="classes" />
</path>
<path id="tests.path">
<path refid="base.path" />
<pathelement location="testclasses" />
</path>
コマンドライン引数いくつかのタスクは、別プロセスにコマンドラインで渡す引数を受け取ることができます。 空白文字を含む引数指定を簡単にするために、ネストした要素を使用できます。
例<arg value="-l -a" /> これは、空白文字を含む単一のコマンドライン引数です。 <arg line="-l -a" /> これは、二つのコマンドライン引数を表現しています。 <arg path="/dir;/dir2:\dir3" /> これは
DOSベースのシステム上では 参照
ビルドファイルの要素の 以下の例では、
これは、次のように書き換えることができます。
PatternSetや、FileSet、PATH類似構造に対してネストした要素を使用するすべてのタスクは、これらの構造に対してリファレンスを受け付けます。 ディレクトリベースのタスクある種のタスクは、実行するタスクのためにディレクトリツリーを使用します。 たとえば、Javacタスクは、ディレクトリツリー上で.javaファイルと動作します。 そのようなディレクトリツリーのサブセットに対して作業できることは、時々非常に便利です。 この節では、そのようなディレクトリツリーのサブセットを選択する方法について説明します。 Antは、以下の2つの方法でサブセットを作成することができますが、両方を同時に使用することもできます。
包含と除外の両方が使用される時には、包含パターンにマッチしても、除外パターンにマッチしないファイル/ディレクトリだけが使用されます。 パターンは、ビルドファイル内部で、タスクの属性やネストした要素と、外部ファイルなどの手段を用いて指定できます。 外部ファイルの各行は、包含パターンや除外パターンのリストに追加されて、パターンとみなされます。 パターンこの前で説明したように、パターンは包含と除外のために使用されます。 これらのパターンは、次に示すように、DOSやUNIXで使用されているパターンと良く似ています。 '*'はゼロ個以上の文字とマッチしますが、'?'は一文字とマッチします。 例: '*.java'は'.java'と'x.java'、'FooBar.java'にマッチしますが、'FooBar.xml'にはマッチしません (最後が'.java'ではありません)。 '?.java'は'x.java'と'A.java'にマッチしますが、'.java'や'xyz.java'にはマッチしません (どちらも'.java'の前にあるのは1文字ではありません)。 '*'と'?'を組み合わせは許されています。 マッチングはディレクトリに対してもおこなわれます。 これは、パターン中でマッチする最初のディレクトリは、パス中でマッチする最初のディレクトリであるという意味です。 その後、二番目のディレクトリがマッチします。 たとえば、パターン'/?abc/*/*.java'とパス'/xabc/foobar/test.java'がある場合に、まず最初に'?abc'は'xabc'にマッチし、次に'*'は'foobar'にマッチし、最後に'*.java'は'test.java'にマッチします。 すべてマッチした場合に、パスがパターンにマッチしたことになります。 少し融通が効くようにするために、私たちは複数のディレクトリレベルにマッチすることを可能にする特別な仕様を一つ追加しました。 これは、完全ディレクトリツリーや、ディレクトリツリー内のどこかにあるファイルにマッチするために使用します。 これをおこなうためには、'**'をディレクトリの名前として使用しなければいけません。 '**'が、パターン中のディレクトリの名前として使用された時には、それは0個以上のディレクトリにマッチします。 たとえば、'/test/**'は、'/test/x.java',や'/test/foo/bar/xyz.html'のような '/test/'の下のすべてのファイル/ディレクトリにマッチしますが、 '/xyz.xml'にはマッチしません。 一つの"略記法"として、パターンが'/'か'\'で終わっていた場合に'**'を追加します。 たとえば、 "mypackage/test/"は"mypackage/test/**"のように解釈されます。 例:
これらのパターンを包含や除外のために使うことで、必要なファイルだけを選択する強力な方法が得られます。 例
<copy todir="${dist}" >
<fileset dir="${src}"
includes="**/images/*"
excludes="**/*.gif"
/>
</copy>
これは、ディレクトリツリー"${src}"内で"images"と呼ばれるディレクトリ内のすべてのファイルを、"${dist}"にコピーしますが、 all "*.gif"ファイルはコピーしません。 この例はネストした要素を使って、次のように記述することができます。
<copy todir="${dist}" >
<fileset dir="${src}" />
<include name="**/images/*"/>
<exclude name="**/*.gif" />
</fileset>
</copy>
デフォルトの除外集合デフォルトですべてのディレクトリベースのタスクから除外される定義の集合があります。 それらは、以下の通りです。 "**/*~",
"**/#*#",
"**/%*%",
"**/CVS",
"**/CVS/*",
"**/.cvsignore"
デフォルトの除外集合を適用したくない場合には、
defaultexcludes="no"
属性を無効にしてください。
パターンセットパターンを集合としてグループ化して、後からそのid属性で参照することができます。
これは パターンは、ネストした
例<patternset id="non.test.sources" > <include name="**/*.java" /> <exclude name="**/*Test*" /> </patternset>
すべての ファイルセットファイルセットは、ファイルのグループです。
これらのファイルは、ベースディレクトリから開始するディレクトリツリー内で見つけることができ、多くのパターンセットからパターンによってマッチされます。
ファイルセットは、この機能をサポートしているか、 パターンセットは、ネストした
例
ディレクトリ
前の例と同じパターンを使用して、ディレクトリ ビルド内のタスク
Ant説明与えられたビルドファイルでAntを実行します。これはサブプロジェクトをビルドするために使用します。 antfile属性が省略された時には、与えられたディレクトリ(dir属性)内のファイル"build.xml"を使用します。 target属性が与えられない場合には、新しいプロジェクトのデフォルトターゲットを使用します。 現在のプロジェクトのプロパティは、新しいプロジェクトでも利用できます。 これらのプロパティは、新しいプロパティ内で設定されるプロパティをオーバーライドします (propertiesタスクも参照してください)。 新しいプロジェクトのプロパティを、古いプロジェクトからネストしたpropertyタグを使用して設定することができます。 これによって、あなたのサブプロジェクトをパラメタ化することができます。 パラメタ
例
<ant antfile="subproject/subbuild.xml" dir="subproject" target="compile" />
<ant dir="subproject" />
<ant antfile="subproject/property_based_subbuild.xml">
<property name="param1" value="version 1.x" />
<property file="config/subproject/default.properties" />
</ant>
AntCall説明同じビルドファイルの別のターゲットを呼び出します。 同じプロパティ(このコンテキスト内のparamのプロパティ)を指定するかどうかは選択可能です。 パラメタ
ネストした要素として指定されるパラメタparam指定したターゲットを実行する前に設定するプロパティを指定します。 使用方法のガイドラインとしてpropertyを参照してください。 例
<target name="default">
<antcall target="doSomethingElse">
<param name="param1" value="value"/>
</antcall>
</target>
<target name="doSomethingElse">
<echo message="param1=${param1}"/>
</target>
これは、ターゲット'doSomethingElse'を実行し、'param1=value'を出力します。 AntStructure説明Antのビルドファイルのために、Antが現在知っているすべてのタスクについての情報を含むDTDを生成します。 このタスクが生成したDTDは不完全だということに注意して、常に このタスクは、必要な属性については知らないので、すべて パラメタ
例<antstructure output="project.dtd" /> Available説明リソースがランタイムで利用できる場合に、プロパティを設定します。 このリソースは、ファイルリソースや、クラスパス中のクラス、JVMのシステムリソースなどです。 リソースが存在する場合は、デフォルトではプロパティの値はtrueに設定されますが、そうでなければプロパティは設定されません。 value属性を使用すれば、何か特別な値に設定できます。 通常では、このタスクはシステムパラメタに依存したtarget実行を回避するのに便利なプロパティを設定するために使用します。 パラメタ
ネストした要素として指定されるパラメタclasspath
例<available classname="org.whatever.Myclass" property="Myclass.present" /> Antのクラスパス中にorg.whatever.Myclassが見つかった場合に、
プロパティ Chmod説明指定したディレクトリ内の単一、またはすべてのファイルのパーミッションを変更します。 現在は、Unixでのみ有効です。 パーミッションもUnix風で、chmodコマンドの引数に似ています。 ファイルの包含/排除の処理方法やパターンの記述方法については、 ディレクトリベースのタスクの節を参照してください。 このタスクは、暗黙のファイルセットを持っていて、
ファイルセットの属性のすべてと、ネストした要素を直接サポートしています。
さらに、ネストした パラメタ
例
これは、"start.sh"ファイルを、Unixシステムの任意のユーザに対して読み込み可能で実行可能にします。
これは、
これは、Unixシステム上の同じグループのメンバーに対して Copy説明一つのファイルまたはファイルセットを、新しいファイルまたはディレクトリにコピーします。 ファイルは、元のファイルがコピー先のファイルより新しい場合か、コピー先にファイルが存在しない時にだけコピーされます。 しかし、overwrite属性でファイルをオーバーライトするように明示的に指定することもできます。 ファイルセットを、コピーするファイルを選択するために使用します。 ファイルセットを使用するためには、todir属性を設定しなければいけません。 パラメタ
例ファイルをコピーする <copy file="myfile.txt" tofile="mycopy.txt" /> ファイルをディレクトリにコピーする <copy file="myfile.txt" todir="../some/dir/tree" /> ディレクトリを別のディレクトリにコピーする
<copy todir="../new/dir">
<fileset dir="src_dir"/>
</copy>
ファイルの集合をディレクトリにコピーする
<copy todir="../dest/dir" >
<fileset dir="src_dir" >
<exclude name="**/*.java" />
</fileset>
</copy>
<copy todir="../dest/dir" >
<fileset dir="src_dir" excludes="**/*.java" />
</copy>
CopydirDeprecatedこのタスクは推奨されません。 代わりにCopyタスクを使用してください。 説明コピー元からコピー先にディレクトリ構造をコピーします。 コピーするファイルの集合を絞り込むこともできます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。 このタスクは、暗黙のファイルセットを作成して、
ネストした パラメタ
例 <copydir src="${src}/resources"
dest="${dist}"
/>
これは、ディレクトリ <copydir src="${src}/resources"
dest="${dist}"
includes="**/*.java"
excludes="**/Test.java"
/>
これは、ディレクトリ <copydir src="${src}/resources"
dest="${dist}"
includes="**/*.java"
excludes="mypackage/test/**" />
これは、ディレクトリ CopyfileDeprecatedこのタスクは推奨されません。 代わりにCopyタスクを使用してください。 説明ファイルをコピー元からコピー先にコピーします。 このファイルは、コピー元のファイルがコピー先のファイルより新しい時か、コピー先のファイルが存在しない場合に限りコピーされます。 パラメタ
例
Cvs説明CVSリポジトリから取得したパッケージ/モジュールを処理します。 自動的にビルドする時には、速度の点で、checkoutコマンドよりも、getタスクを使用するべきです。 パラメタ
例 <cvs cvsRoot=":pserver:anoncvs@jakarta.apache.org:/home/cvspublic"
package="jakarta-tools"
dest="${ws.dir}"
/>
これは、cvsRoot属性で指定したCVSリポジトリから、"jakarta-tools"のパッケージ/モジュールをチェックアウトし、"${ws.dir}"にファイルを保存します。 <cvs dest="${ws.dir}" command="update" />
これは、すでに"${ws.dir}"にチェックアウトしてあるパッケージ/モジュールを更新します。 Delete説明単独のファイルや、指定されたディレクトリとそのサブディレクトリに含まれるすべてのファイル、または一つ以上のFileSetで指定されたファイルの集合を削除します。 ファイルの集合が指定された時には、空のディレクトリは削除しません。 パラメタ
例<delete file="/lib/ant.jar" /> これは、ファイル <delete dir="lib" /> これは、 <delete>
<fileset dir="." includes="**/*.bak" />
</delete>
これは、カレントディレクトリとそのすべてのサブディレクトリから、拡張子" DeltreeDeprecatedこのタスクは推奨されません。 代わりにDeleteタスクを使用してください。 説明ディレクトリを、その中のすべてのファイルとサブディレクトリと一緒に削除します。 パラメタ
例<deltree dir="dist" /> これは、ディレクトリ <deltree dir="${dist}" />
これは、ディレクトリ Echo説明メッセージを、System.outかファイルに出力します。 パラメタ
例<echo message="Hello world" /> <echo> This is a longer message stretching over two lines. </echo> Exec説明システムコマンドを実行します。 os属性を指定した時には、指定されたオペレーティングシステムのどれかの上で実行されている時にだけ、そのコマンドを実行します。 パラメタ
例
ネストした要素として指定されるパラメタargコマンドライン引数は、ネストした envネストした
例<exec executable="emacs" > <env key="DISPLAY" value=":1.0" /> </exec> これは、Xウィンドウシステムのディスプレイ1で、
これは、システムコマンドの 注意: 単純にarg要素を使って引数を指定すると動作しても、それらをスペースで区切ったら、JDKのより新しいバージョンに切り替えると動かないかもしれません。 JDK < 1.2では、それらを呼び出すプログラムに独立の引数として渡しますが、 JDK >= 1.2では、それらをまとまった一つの引数として渡すので、これが大部分の呼び出しが失敗する原因です。 注意2: antをWindowsで使用すると、コマンドを実行するごとに新しいDOS-Windowがポップアップしますが、これはあなたが使用しているJDKの問題です。 この問題は、すべての1.2以前のJDKで起ります。 ExecOn説明システムコマンドを実行します。 os属性を指定した時には、指定されたオペレーティングシステムのどれかの上で実行されている時にだけ、そのコマンドを実行します。 ファイルセットの数のファイルと/またはディレクトリを、システムコマンドに引数として渡します。
少なくとも、一つのネストした パラメタ
ネストした要素として指定されるパラメタfilesetこのタスクに対してファイルを定義するために、
任意の数のネストした argargコマンドライン引数は、ネストした envネストした<env>要素で、
システムコマンドに渡す環境変数を指定することができます。
execについての節の解説を参照してください。
例
これは Fail説明現在のビルドを終了します(BuildExceptionを投げるだけです)が、付加情報を出力するように選択できます。 パラメタ
例<fail/> これは、現在のビルドを終了しますが、何も情報を知らせません。 BUILD FAILED build.xml:4: No message <fail message="Something wrong here."/> これは現在のビルドを終了し、次のようなメッセージを出力します。 BUILD FAILED build.xml:4: Something wrong here. Filter説明このプロジェクトにトークンフィルタを設定したり、入力ファイルから複数のトークンフィルタを読み込んでフィルタとして設定します。 プロジェクトの共通のメソッドを使ってファイルのコピー操作を実行するすべてのタスクが、トークンフィルタを使用します。 注意 1: トークン文字列は、区切り文字(@)を含んではいけません。 パラメタ
* パラメタ表の注意1と2を参照してください。 例 <filter token="year" value="2000" />
<copy todir="${dest.dir}">
<fileset dir="${src.dir}" />
</copy>
これは、src.dirディレクトリからdest.dirディレクトリに、含まれているすべての文字列@year@を2000に置換しながら、すべてのファイルを再帰的にコピーします。 <filter filterfile="deploy_env.properties" />これは、deploy_env.propertiesファイルからすべてのプロパティエントリを読み込んで、フィルタとして設定します。 FixCRLF説明テキストファイルをローカルに一致させます。 修正するファイルの集合を絞り込むこともできます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。 このタスクは、暗黙のファイルセットを作成して、
ネストした パラメタ
例 <fixcrlf srcdir="${src}"
cr="remove" eof="remove"
includes="**/*.sh"
/>
シェルスクリプトからキャリッジリターンとEOF文字を削除します。 タブとスペースは、そのままにします。 <fixcrlf srcdir="${src}"
cr="add"
includes="**/*.bat"
/>
各ラインフィードの前にキャリッジリターン文字があることを保証します。 タブとスペースはそのままにします。 EOF文字は、DOSシステム上で動作する場合には、そのままにし、Unixシステム上で動作する場合は削除します。 <fixcrlf srcdir="${src}"
tabs="add"
includes="**/Makefile"
/>
ローカルのOSの慣習に一致するように、CR文字を追加または削除して、スペースをタブに適切に変換します。 DOSシステム上で実行する場合には、EOF文字はそのままにし、Unixシステム上で実行する場合には削除します。 makeの多くのバージョンでは、コマンドの前にタブが必要です。 <fixcrlf srcdir="${src}"
tabs="remove"
includes="**/README*"
/>
ローカルのOSの慣習に一致するように、CR文字を追加または削除して、すべてのタブをスペースに変換します。 EOF文字は、DOSシステム上で実行した場合にはそのままにし、Unixシステム上で実行した場合には削除します。 これで、ユーザがREADMEをどのエディタを使って見るかを知る必要がなくなります。 GenKey説明keystoreファイルに暗号鍵を生成します。 パラメタ
この代わりに、dnameという名前の副要素を識別名を作成して、それを名前と値を持つparam要素を使って指定することができます。 この副要素を使う時には、プロパティは自動的にエンコードされ、','は置換されます。 次の2つの例は、まったく同じです。 例
Get説明URLからファイルを取得します。 verboseオプションが"on"の時には、このタスクは100KB取得するごとに'.'を表示します。 自動的にビルドをする時には、CVSタスク上で このタスクを選択しなければいけません。 CVSは、圧縮したアーカイブをhttp/ftpでロードするよりも、著しく遅いです。 usetimestampsオプションによって、リモートファイルがローカルコピーより新しい場合にだけ取得するようにダウンロードを制御することができます。 ローカルコピーが存在しない場合には、常にダウンロードします。 ファイルをダウンロードした時には、JVMがJava 1.2以降の場合に、ダウンロードしたファイルのタイムスタンプはリモートのタイムスタンプに設定されます。 注意: このタイムスタンプ機能は、HTTPプロトコルを使ってダウンロードした時にだけ動作します。パラメタ
例<get src="http://jakarta.apache.org/" dest="help/index.html" /> http://jakarta.apache.org/のインデックスページを取得して、ファイル <get src="http://jakarta.apache.org/builds/tomcat/nightly/ant.zip" dest="optional.jar" verbose="true" usetimestamps="true"/> ローカルコピーが存在しないか、古い場合に、Tomcatの配布から毎夜作成されるantのビルドを取得します。 進行状況を知るためにverboseオプションを使用します。 GUnzip説明gzipファイルを展開します。 destがディレクトリの場合には、作成するファイルの名前はsrcと同じです(".gz"拡張子が存在する場合には、取り除きます)。 destが省略された場合には、srcの親ディレクトリに展開します。 元のファイルが展開先のファイルより新しいか、存在しない場合にだけファイルを展開します。 パラメタ
例
これは、test.tar.gzからtest.tarに展開します。
これは、test.tar.gzからtest2.tarに展開します。
これは、test.tar.gzからsubdir/test.tarに展開します(subdirがディレクトリと仮定します)。 GZip説明ファイルをgzipします。 パラメタ
例
Jar説明Jarはファイルの集合です。 basedir属性は、jarを実行するディレクトリを指定します。 ファイルのパーミッションは、生成したjarファイルには格納されないことに注意してください。 jarアーカイブのファイルの集合を絞り込むこともできます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。 このタスクは、暗黙のファイルセットを作成して、
ネストした より融通が聞くように、ネストしたファイルセットを使用して、一つのJARに異なるファイルのツリーを一緒に格納するために複数のファイルセットを指定できます。 詳細と例は、Zipを参照してください。 manifestが省略された場合には、Antが簡単なものを追加します。 あなたのファイルの集合に、META-INF/MANIFEST.MFを含めてはいけません。
パラメタ
例 <jar jarfile="${dist}/lib/app.jar" basedir="${build}/classes" />
これは <jar jarfile="${dist}/lib/app.jar"
basedir="${build}/classes"
excludes="**/Test.class"
/>
これは、 <jar jarfile="${dist}/lib/app.jar"
basedir="${build}/classes"
includes="mypackage/test/**"
excludes="**/Test.class"
/>
これは、 <jar jarfile="${dist}/lib/app.jar">
<fileset dir="${build}/classes"
excludes="**/Test.class"
/>
<fileset dir="${src}/resources"/>
</jar>
これは、 Java説明(Antの)実行中のVMか、指定された場合には別のVMをフォークして、Javaのクラスを実行します。 System.exit()はVMを終了すると同時にAntも終了させるので、実行されるクラスではこれを呼び出さないように注意してください。 この問題が発生した場合には、 System.exit()が他のVMを停止させても、現在Antを実行中のVMは停止させないように、fork属性を設定することを強く推奨します。 パラメタ
ネストした要素として指定されるパラメタargとjvmarg
クラスやフォークしたVMに引数を指定するために、ネストした syspropertyクラスに必要なシステムプロパティを指定するためにネストした classpath
例
<java classname="test.Main" >
<arg value="-h" />
<classpath>
<pathelement location="\test.jar" />
<pathelement path="${java.class.path}" />
</classpath>
</java>
例<java classname="test.Main" /> <java classname="test.Main"
fork="yes" >
<sysproperty key="DEBUG" value="true" />
<arg value="-h" />
<jvmarg value="-Xrunhprof:cpu=samples,file=log.txt,depth=3" />
</java>
Javac説明(Antの)VMを実行しているソースツリーをコンパイルします。 Javaソースファイルをコンパイルするために、コンパイル元とコンパイル先のディレクトリを再帰的に走査します。 Javaファイルは、対応するクラスファイルがないか、クラスファイルがJavaファイルよりも古い場合にのみ、コンパイルされます。 ソースツリーのディレクトリ構造は、パッケージ階層に従っていなければいけません。 コンパイル/コピーされるファイルの集合を絞り込むことができます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用することができます。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。 異なるコンパイラを使用できます。 これは、"build.compiler"プロパティで選択できます。 以下のように、3つの選択枝があります。
JDK 1.1/1.2では、classicがデフォルトです。 JDK 1.3では、modernがデフォルトです。 パラメタ
|