著
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の最新の安定したバージョンは、 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をインストールする必要があります。
ディレクトリjakarta-antに移動します。
JDKが、パスに存在することを確認します。
JAVA_HOME環境変数を設定します。 これは、JDKをインストールしたディレクトリを設定しなければいけません。 あなたのOSでこれを設定する方法の例は、Antのインストールを参照してください。
Antのブートストラップバージョンをビルドするために、
bootstrap.bat (Windows)またはbootstrap.sh (UNIX)
を実行します。
終了してから、Windowsの場合には
build.bat -Dant.dist.dir=<directory to install Ant> dist
を実行し、Unixの場合には
build.sh -Dant.dist.dir=<directory to install Ant> dist
を実行して、Antのバイナリ版を作成します。 この配布は、あなたの指定したディレクトリで見つかります。
Antのバイナリ配布は、binと
docs、libの3つのディレクトリから構成されています。
binとlibディレクトリだけは、Antを実行するために不可欠です。
Antを実行するためには、以下のように実行しなければいけません。
binディレクトリをパスに追加します。binとlibディレクトリを含むディレクトリに設定しなければいけません。Antをc:\ant\にインストールしたと仮定します。
以下のように環境を設定してください。
set ANT_HOME=c:\ant set JAVA_HOME=c:\jdk1.2.2 set PATH=%PATH%;%ANT_HOME%\bin
Antを/usr/local/antにインストールしたと仮定します。
以下のように環境を設定してください。
export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.2.2
export PATH=${PATH}:${ANT_HOME}/bin
Antは、さまざまな設定で使用できます。 少なくとも以下のような設定が必要になるでしょう。
Antのクラスパスは、ant.jarとあなたが選択したJAXP準拠のXMLパーザのJAR/クラスファイルを含んでいなければいけません。
(javacタスクや、rmicタスクのような)JDKの機能が必要な時には、JDK 1.1ではJDKのclasses.zipファイルを、JDK 1.2やJDK1.3ではtools.jarをクラスパスに追加しなければいけません。
binディレクトリに存在するAntに付属しているスクリプトは、
JAVA_HOME環境変数が設定されている場合には、
tools.jarを自動的に追加します。
(execタスクやcvsタスクのように)
プラットフォーム固有のアプリケーションを実行する時には、
プロパティant.homeを、Unix上でexecタスクを実行するために必要なantRunシェルスクリプトがあるbinディレクトリを含むディレクトリに設定しなければいけません。
前の節で述べたようにAntをインストールすれば、Antは実行は簡単です。
単に、antと入力するだけです。
何も指定しなければ、Antはカレントディレクトリ中のbuild.xmlファイルを探します。
見つかった時にはそのファイルをビルドファイルとして使用しますが、見つからない時にはファイルシステムのルートに到達するまで親ディレクトリを探していきます。
Antに別のビルドファイルを使用させるためには、
コマンドラインオプション-buildfile <ファイル>を使用します。
この<ファイル>は、あなたが使用したいビルドファイルです。
さらに、ビルドファイルで指定したプロパティ(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をカレントディレクトリ内のbuild.xmlを使用して、デフォルトのターゲットに対して実行します。
ant -buildfile test.xml
これは、Antをカレントディレクトリ内のtest.xmlファイルを使用して、デフォルトのターゲットに対して実行します。
ant -buildfile test.xml dist
これは、Antをカレントディレクトリ内のtest.xmlファイルを使用して、distと呼ぶターゲットに対して実行します。
ant -buildfile test.xml -Dbuild=build/classes dist
これは、Antをカレントディレクトリ内のtest.xmlを使用して,distと呼ぶターゲットに対して実行します。
さらに、buildプロパティに値build/classesを設定します。
Antを自分自身の方法でインストールした時には、Antを次のように起動します。
java -Dant.home=c:\ant org.apache.tools.ant.Main [オプション] [ターゲット]
この説明は、実際にはantコマンドと同じです。
オプションとターゲットは、Antをantコマンドを使って実行する時と同じです。
この例は、クラスパスが以下のファイルを含むように設定していると仮定しています。
ビルドファイルは、XMLで記述します。 各ビルドファイルは、一つのプロジェクトを含んでいます。
ビルドファイルのそれぞれの要素は、id属性を持つことができ、
後からこれに与えた値を使って参照できます。
この値は、一意でなくてはいけません。
プロジェクト(project)は、次の3つの属性を持っています。
| 属性 | 説明 | 必須 |
| name | ターゲットの名前。 | Yes |
| default | ターゲットが指定されない時に使用するデフォルトターゲット。 | Yes |
| basedir | すべてのパスの処理がおこなわれるベースディレクトリ。 この属性は、"basedir"プロパティを設定することでオーバーライドすることができます。 これをおこなった時には、プロジェクトタグが除外されるかもしれません。 | Yes |
各プロジェクトは、一つ以上のターゲットを定義します。 一つのターゲットは、あなたが実行したいタスクの集合です。 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 | ターゲットの名前。 | Yes |
| depends | このターゲットが依存するターゲットの名前のカンマで区切られたリスト。 | No |
| if | このターゲットを実行するために適切に設定しなければならないプロパティの名前。 | No |
| unless | このターゲットを実行するために設定してはいけないプロパティの名前。 | No |
| description | このターゲットの機能の簡単な説明。 | No |
タスクは、一つの実行可能なコードです。
タスクは、複数の属性(または、あなたが選んだ引数)を持つことができます。 属性の値は、プロパティに対する参照を含むことができます。 この属性の参照は、タスクが実行される前に解決されます。
タスクは、次のような共通の構造を持っています。
<name attribute1="value1" attribute2="value2" ... />
このnameはタスクの名前であり、attribute-xは属性名、そしてvalue-xはこの属性の値です。
これが組み込みタスクの集合ですが、独自のタスクを記述することも簡単です。
すべてのタスクは、taskname属性を持っています。
この属性の値は、Antが生成するロギングメッセージで使用されます。
プロジェクトは、プロパティの集合を持つことができます。 これらは、propertyタスクによってビルドファイル中で設定されるかもしれませんし、Antの外で設定されるかもしれません。 プロパティは、名前と値を持っています。 プロパティは、タスクの属性の値で使用することができます。 これは属性の値の中で "${"と"}"の間にプロパティ名を書くことで可能です。
値"build"を持つ"builddir"と呼ぶプロパティが存在する場合には、属性内で "${builddir}/classes" のように使用することができます。 これは、"build/classes"として解決されます。
Antは、すべてのシステムプロパティに対して、 propertyタスクを使って定義してあるかのようにアクセスすることができます。 たとえば、${os.name}は、オペレーティングシステムの名前に展開されます。
さらに、Antは次のような組み込みプロパティを知っています。
<project name="MyProject" default="dist" basedir=".">
<!-- このビルドのためにグローバルプロパティを設定します -->
<property name="src" value="." />
<property name="build" value="build" />
<property name="dist" value="dist" />
<target name="prepare">
<!-- タイムスタンプを作成します -->
<tstamp/>
<!-- コンパイルで使用するビルドディレクトリ構造を作成します -->
<mkdir dir="${build}" />
</target>
<target name="compile" depends="prepare">
<!-- ${src}から${build}に、Javaコードをコンパイルします -->
<javac srcdir="${src}" destdir="${build}" />
</target>
<target name="dist" depends="compile">
<!-- ${dist}/libディレクトリを作成します -->
<mkdir dir="${dist}/lib" />
<!-- ${build}の中のすべてのファイルをMyProject-${DSTAMP}.jarファイルに格納します -->
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}" />
</target>
<target name="clean">
<!-- ${build}と${dist}ディレクトリツリーを削除します -->
<delete dir="${build}" />
<delete dir="${dist}" />
</target>
</project>
プロジェクトは、 これをサポートしているタスクでフィルタリング-コピーの動作が選択された場合には、 ファイルのコピー時にファイルが見つかれば、 自動的に展開することができるトークンの集合を持つことができます。 これはビルドファイル中で filterタスクを使って設定できます。
これは非常に有害な動作なので、ファイル中のトークンは@token@の形式でなければいけません。 tokenは、filterタスクで設定されたトークン名です。 このトークンの文法は、このようなフィルタリングを実行できる他のビルドシステムの文法と一致し、 大部分のプログラミング言語やスクリプト言語、及びドキュメンテーションシステムと直交しています。
注意: @token@の形式のトークンがファイル中に見つかっても、そのトークンに関連づけられたフィルタがない場合には、何も変更されません。 だから、エスケープする方法はありませんが、トークンに対して適切な名前を選択する限りにおいては、これが問題を引き起こすことはありません。
":"と";"を区切り文字として使用したPATHとCLASSPATH変数を指定することができます。 Antは、それを現在のオペレーティングシステムの正しい文字に変換します。
PATHのような値を指定する時には、常にネストした要素が使用できます。 これは、次のような一般的な形式を取ります。
<classpath>
<pathelement path="${classpath}" />
<pathelement location="lib/helper.jar" />
</classpath>
path属性が
":"や";"で区切られた位置のリストを受け付けるのに対して、
location属性は、プロジェクトのベースディレクトリに対して相対的な(または絶対ファイル名の)単一のファイルまたはディレクトリを指定します。
path属性は、すでに定義済みのパスと一緒に使われることを意図しています -
他の場合には、location属性を使った複数の要素が使われます。
pathとlocation属性をサポートしたPATH要素を理解する早道としては、
<classpath>
<pathelement path="${classpath}" />
</classpath>
は、次のように短縮することができます。
<classpath path="${classpath}" />
さらに、FileSetは、
ネストした<fileset>要素で指定することができます。
PATH類似構造にFileSetを構成するファイルが追加される順番は、定義されていません。
<classpath>
<pathelement path="${classpath}" />
<fileset dir="lib">
<include name="**/*.jar" />
</fileset;>
<pathelement location="classes" />
</classpath>
これは、${classpath}の値の後に、
libディレクトリ中のすべてのJARファイルを追加し、
さらにclassesディレクトリを追加したPATHを構築します。
複数のタスクに同じPATH類似構造を使用したい場合には、
それらをtargetと同じレベルで
<path>要素を使って定義し、
そのid属性で参照できます -
例は、参照を見てください。
PATH類似構造は、ネストした<path>要素を使って、他の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>
いくつかのタスクは、別プロセスにコマンドラインで渡す引数を受け取ることができます。 空白文字を含む引数指定を簡単にするために、ネストした要素を使用できます。
| 属性 | 説明 | 必須 |
| value | 単一のコマンドライン引数で、空白文字を含むことができます。 | この中の一つだけです。 |
| line | コマンドライン引数の空白で区切られたリスト。 | |
| file | 単一のコマンドライン引数としてのファイルの名前。 Antが、ファイルの絶対ファイル名に置換します。 | |
| path | 単一のコマンドライン引数として扱われる文字列。 パスセパレータとして;や:を使用できますし、Antはそれをプラットフォームのローカルの規則に変換します。 |
<arg value="-l -a" />
これは、空白文字を含む単一のコマンドライン引数です。
<arg line="-l -a" />
これは、二つのコマンドライン引数を表現しています。
<arg path="/dir;/dir2:\dir3" />
これは
DOSベースのシステム上では\dir;\dir2;\dir3で、
Unix類似システムでは/dir:/dir2:/dir3の値を持つ
単一のコマンドライン引数です。
ビルドファイルの要素のid属性は、それを参照するために使用できます。
これは、XMLの同じ一部を何度も複製する - たとえば、<classpath>構造を二度以上使用する場合に便利です。
以下の例では、
<project ... >
<target ... >
<rmic ...>
<classpath>
<pathelement location="lib/" />
<pathelement path="${java.class.path}/" />
<pathelement path="${additional.path}" />
</classpath>
</rmic>
</target>
<target ... >
<javac ...>
<classpath>
<pathelement location="lib/" />
<pathelement path="${java.class.path}/" />
<pathelement path="${additional.path}" />
</classpath>
</javac>
</target>
</project>
これは、次のように書き換えることができます。
<project ... >
<path id="project.class.path">
<pathelement location="lib/" />
<pathelement path="${java.class.path}/" />
<pathelement path="${additional.path}" />
</path>
<target ... >
<rmic ...>
<classpath refid="project.class.path" />
</rmic>
</target>
<target ... >
<javac ...>
<classpath refid="project.class.path" />
</javac>
</target>
</project>
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/**"のように解釈されます。
例:
| **/CVS/* | ディレクトリツリーの任意の場所にあるCVSディレクトリ内のすべてのファイルにマッチします
以下のファイルにマッチします。 CVS/Repository しかし、以下のファイルにはマッチしません。 org/apache/CVS/foo/bar/Entries ('foo/bar/' part does not match) |
| org/apache/jakarta/** | org/apache/jakarta内のすべてのファイルにマッチします。
以下のファイルにマッチします。 org/apache/jakarta/tools/ant/docs/index.html しかし、以下のファイルにはマッチしません。 org/apache/xyz.java ('jakarta'/' part is missing) |
| org/apache/**/CVS/* | org/apacheの下任意のディレクトリにあるCVSディレクトリ内のすべてのファイルにマッチします。
以下のファイルにマッチします。 org/apache/CVS/Entries ただし、以下のファイルにはマッチしません。 org/apache/CVS/foo/bar/Entries ('foo/bar/' part does not match) |
| **/test/** | パスにディレクトリ'test'を持つすべてのファイルにマッチします。 ファイル名が'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要素で定義します - この要素はFileSetか、暗黙にFileSetを構成するディレクトリベースのタスクの中にネストして出現します。
さらに、patternsetは、targetと同じレベル - すなわち、projectの子として定義できます。
パターンは、ネストした<include>または<exclude>要素か、以下の属性で定義できます。
| 属性 | 説明 |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、すべてのファイルを含みます。 |
| includesfile | ファイルの名前。 このファイルの各行は、包含パターンとして解釈されます。 |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 |
<patternset id="non.test.sources" > <include name="**/*.java" /> <exclude name="**/*Test*" /> </patternset>
すべての.javaファイルにマッチするが、その名前にテキストTestを含まないパターン集合を作成します。
この集合は、この機能をサポートしたタスクやファイルセットによって、
<patternset refid="non.test.sources"
/>で参照されます。
ファイルセットは、ファイルのグループです。
これらのファイルは、ベースディレクトリから開始するディレクトリツリー内で見つけることができ、多くのパターンセットからパターンによってマッチされます。
ファイルセットは、この機能をサポートしているか、targetと同じレベル - すなわちprojectの子として、タスクの内部で使用することができます。
パターンセットは、ネストした<patternset>要素として指定することができます。
さらに、ファイルセットは、暗黙のパターンセットを持っていて、
パターンセットの属性と同様に、
パターンセットのネストした<include>と<exclude>要素を直接サポートしています。
| 属性 | 説明 | 必須 |
| dir | このファイルセットのディレクトリツリーのルート。 | Yes |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
<fileset dir="${server.src}" >
<patternset id="non.test.sources" >
<include name="**/*.java" />
<exclude name="**/*Test*" />
</patternset>
</fileset>
ディレクトリ${server.src}内のJavaソースファイルであり、テキストTestを名前に含まないすべてのファイルをグループ化します。
<fileset dir="${client.src}" >
<patternset refid="non.test.sources" />
</fileset>
前の例と同じパターンを使用して、ディレクトリ${client.src}内のすべてのファイルをグループ化します。
与えられたビルドファイルでAntを実行します。これはサブプロジェクトをビルドするために使用します。
antfile属性が省略された時には、与えられたディレクトリ(dir属性)内のファイル"build.xml"を使用します。
target属性が与えられない場合には、新しいプロジェクトのデフォルトターゲットを使用します。
現在のプロジェクトのプロパティは、新しいプロジェクトでも利用できます。 これらのプロパティは、新しいプロパティ内で設定されるプロパティをオーバーライドします (propertiesタスクも参照してください)。 新しいプロジェクトのプロパティを、古いプロジェクトからネストしたpropertyタグを使用して設定することができます。 これによって、あなたのサブプロジェクトをパラメタ化することができます。
| 属性 | 説明 | 必須 |
| antfile | 使用するビルドファイル。 デフォルトは、"build.xml"。 | No |
| dir | 新しいAntのプロジェクトのbasedirとして使用するディレクトリ。 デフォルトは、カレントディレクトリ。 | No |
| target | 新しいAntプロジェクトが実行しなければならないターゲット。 | No |
| output | Antの出力を書き込むファイル名。 | No |
<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>
同じビルドファイルの別のターゲットを呼び出します。 同じプロパティ(このコンテキスト内のparamのプロパティ)を指定するかどうかは選択可能です。
| 属性 | 説明 | 必須 |
| target | 実行するターゲット。 | Yes |
指定したターゲットを実行する前に設定するプロパティを指定します。 使用方法のガイドラインとして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'を出力します。
Antのビルドファイルのために、Antが現在知っているすべてのタスクについての情報を含むDTDを生成します。
このタスクが生成したDTDは不完全だということに注意して、常に<taskdef>を使用したXMLエントリを追加してください。
この問題を回避する方法は、ここを参照してください。
このタスクは、必要な属性については知らないので、すべて#IMPLIEDとしてリストします。
| 属性 | 説明 | 必須 |
| output | DTDを書き込むファイル。 | Yes |
<antstructure output="project.dtd" />
リソースがランタイムで利用できる場合に、プロパティを設定します。 このリソースは、ファイルリソースや、クラスパス中のクラス、JVMのシステムリソースなどです。
リソースが存在する場合は、デフォルトではプロパティの値はtrueに設定されますが、そうでなければプロパティは設定されません。 value属性を使用すれば、何か特別な値に設定できます。
通常では、このタスクはシステムパラメタに依存したtarget実行を回避するのに便利なプロパティを設定するために使用します。
| 属性 | 説明 | 必須 |
| property | 設定するプロパティの名前。 | Yes |
| value | プロパティに設定する値。 デフォルトは"true"。 | No |
| classname | クラスパス内を検索するクラス。 | Yes |
| resource | JVM内を検索するリソース。 | |
| file | 検索するファイル。 | |
| classpath | classnameを検索する時に使用するクラスパス。 | No |
Availableのclasspath属性は、PATH類似構造であり、ネストしたclasspath要素としても設定できます。
<available classname="org.whatever.Myclass" property="Myclass.present" />
Antのクラスパス中にorg.whatever.Myclassが見つかった場合に、
プロパティMyclass.presentを値"true"に設定します。
指定したディレクトリ内の単一、またはすべてのファイルのパーミッションを変更します。 現在は、Unixでのみ有効です。 パーミッションもUnix風で、chmodコマンドの引数に似ています。
ファイルの包含/排除の処理方法やパターンの記述方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを持っていて、
ファイルセットの属性のすべてと、ネストした要素を直接サポートしています。
さらに、ネストした<fileset>を使用して、ファイルセットを指定することができます。
| 属性 | 説明 | 必須 |
| file | パーミッションを変更しなければならないファイルまたは単一のディレクトリ。 | 2つ、またはネストした<fileset>要素の中の一つだけ。 |
| dir | パーミッションを変更しなければならないファイルを持っているディレクトリ。 | |
| perm | 新しいパーミッション | Yes |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| parallel | すべての指定したファイルを単一のchmodコマンドを使用して処理するかどうかを指定します。
デフォルトはtrueです。 |
No |
| type | file、dir、bothの中の一つです。 fileを設定した場合には、プレーンファイルのパーミッションだけを変更します。 dirを設定した場合には、ディレクトリだけを処理対象にします。 | No。デフォルトはfileです。 |
<chmod file="${dist}/start.sh" perm="ugo+rx" />
これは、"start.sh"ファイルを、Unixシステムの任意のユーザに対して読み込み可能で実行可能にします。
<chmod dir="${dist}/bin" perm="ugo+rx" includes="**/*.sh" />
これは、${dist}/binの下のすべての".sh"ファイルを、Unixシステムの任意のユーザに対して読み込み可能で実行可能にします。
<chmod perm="g+w" />
<fileset dir="shared/sources1" >
<exclude name="**/trial/**" />
</fileset>
<fileset refid="other.shared.sources" />
</chmod>
これは、Unixシステム上の同じグループのメンバーに対してshared/sources1の下のすべてのファイル(ただし、trialという名前のディレクトリの下のファイルは除きます)を書き込み可能にします。
さらに、id other.shared.sourcesを持つファイルセットに属するすべてのファイルを同じパーミッションにします。
一つのファイルまたはファイルセットを、新しいファイルまたはディレクトリにコピーします。 ファイルは、元のファイルがコピー先のファイルより新しい場合か、コピー先にファイルが存在しない時にだけコピーされます。 しかし、overwrite属性でファイルをオーバーライトするように明示的に指定することもできます。
ファイルセットを、コピーするファイルを選択するために使用します。 ファイルセットを使用するためには、todir属性を設定しなければいけません。
| 属性 | 説明 | 必須 |
| file | コピーするファイル。 | fileか、少なくとも一つのネストしたfileset要素のどちらか一つ。 |
| tofile | コピー先のファイル。 | file属性には、tofileかtodirのどちらかを使用できます。 ネストしたファイルセットには、todirだけが許されています。 |
| todir | コピー先のディレクトリ。 | |
| overwrite | コピー先ファイルの方が新しい場合でも、既存のファイルをオーバーライトします。 デフォルトは"no"です。 | No |
| filtering | コピー中にトークンフィルタリングを実行するかどうかを指定します。 デフォルトは"no"です。 | No |
| flatten | コピー元のディレクトリのディレクトリ構造を無視して、すべてのファイルをtodirで指定した単一のディレクトリ中にコピーします。 デフォルトは"no"です。 | No |
| includeEmptyDirs | ネストしたファイルセットに含まれる空のディレクトリをコピーします。 デフォルトは"yes"です。 | No |
ファイルをコピーする
<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>
このタスクは推奨されません。 代わりにCopyタスクを使用してください。
コピー元からコピー先にディレクトリ構造をコピーします。
コピーするファイルの集合を絞り込むこともできます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを作成して、
ネストした<include>と<exclude>、
<patternset>のように、<fileset>のすべての属性(dirはsrcになります)をサポートします。
| 属性 | 説明 | 必須 |
| src | コピーするディレクトリ。 | Yes |
| dest | コピー先のディレクトリ。 | Yes |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| filtering | コピー中にトークンフィルタリングを実行するかどうかを指定します。 | No |
| flatten | コピー元のディレクトリのディレクトリ構造を無視して、すべてのファイルをtodirで指定した単一のディレクトリ中にコピーします (デフォルトは"no"です)。 | No |
| forceoverwrite | コピー先のファイルが新しい場合でも、既存のファイルを上書きします (デフォルトはfalseです)。 | No |
<copydir src="${src}/resources"
dest="${dist}"
/>
これは、ディレクトリ${src}/resourcesを、${dist}にコピーします。
<copydir src="${src}/resources"
dest="${dist}"
includes="**/*.java"
excludes="**/Test.java"
/>
これは、ディレクトリ${src}/resourcesを${dist}に再帰的にコピーします。
Test.javaという名前を持つファイルを除き、すべてのJavaファイルをコピーします。
<copydir src="${src}/resources"
dest="${dist}"
includes="**/*.java"
excludes="mypackage/test/**" />
これは、ディレクトリ${src}/resourcesを${dist}に再帰的にコピーします。
mypackage/testディレクトリの下のファイルを除き、すべてのJavaファイルをコピーします。
このタスクは推奨されません。 代わりにCopyタスクを使用してください。
ファイルをコピー元からコピー先にコピーします。 このファイルは、コピー元のファイルがコピー先のファイルより新しい時か、コピー先のファイルが存在しない場合に限りコピーされます。
| 属性 | 説明 | 必須 |
| src | コピーするファイルのファイル名。 | Yes |
| dest | コピー先のファイルのファイル名。the filename of the file where to copy to. | Yes |
| filtering | iコピー中にトークンフィルタリングを実行するかどうかを指定します。 | No |
| forceoverwrite | コピー先のファイルが新しい場合でも、既存のファイルを上書きします (デフォルトはfalseです)。 | No |
<copyfile src="test.java" dest="subdir/test.java" />
<copyfile src="${src}/index.html" dest="${dist}/help/index.html" />
CVSリポジトリから取得したパッケージ/モジュールを処理します。
自動的にビルドする時には、速度の点で、checkoutコマンドよりも、getタスクを使用するべきです。
| 属性 | 説明 | 必須 |
| command | 実行するCVSコマンド。 | No, デフォルトは"checkout"です。 |
| cvsRoot | CVSROOT変数。 | No |
| dest | チェックアウトするファイルを置くディレクトリ。 | No, デフォルトはプロジェクトのbasedirです。 |
| package | チェックアウトするパッケージ/モジュール。 | No |
| tag | チェックアウトするパッケージ/モジュールのタグ。 | No |
| date | 指定された日以前で、もっとも新しいリビジョンを使用します。 | No |
| quiet | 情報を提供するメッセージを表示しないようにします。 | No, デフォルトは"false"です。 |
| noexec | 報告するだけで、ファイルを一切変更しません。 | No, デフォルトは"false"です。 |
| output | コマンドの標準出力をリダイレクトするファイル。 | No, デフォルトの出力はMSG_INFOで指定するANTログです。 |
| error | コマンドの標準エラー出力をリダイレクトするファイル。 | No, デフォルトの出力はMSG_INFOで指定するANTログです。 |
<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}"にチェックアウトしてあるパッケージ/モジュールを更新します。
単独のファイルや、指定されたディレクトリとそのサブディレクトリに含まれるすべてのファイル、または一つ以上のFileSetで指定されたファイルの集合を削除します。 ファイルの集合が指定された時には、空のディレクトリは削除しません。
| 属性 | 説明 | 必須 |
| file | 削除するファイル。 | 2つのうち少なくとも1つ |
| dir | ファイルを削除するディレクトリ。 | |
| verbose | 削除する各ファイルの名前を表示します("true"/"false"). 省略された時のデフォルトは"false"です。 | No |
| includes | 推奨されません。 削除しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、カレントディレクトリとすべてのサブディレクトリのファイルを削除します。 | No |
| includesfile | 推奨されません。 ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 推奨されません。 削除リストから除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | 推奨されません。 ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | 推奨されません。 デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
<delete file="/lib/ant.jar" />
これは、ファイル/lib/ant.jarを削除します。
<delete dir="lib" />
これは、/libディレクトリのすべてのファイルを削除します。
<delete>
<fileset dir="." includes="**/*.bak" />
</delete>
これは、カレントディレクトリとそのすべてのサブディレクトリから、拡張子".bak"を持つすべてのファイルを削除します。
このタスクは推奨されません。 代わりにDeleteタスクを使用してください。
ディレクトリを、その中のすべてのファイルとサブディレクトリと一緒に削除します。
| 属性 | 説明 | 必須 |
| dir | 削除するディレクトリ。 | Yes |
<deltree dir="dist" />
これは、ディレクトリdistを、その中のファイルとサブディレクトリを含めて削除します。
<deltree dir="${dist}" />
これは、ディレクトリ${dist}を、その中のファイルとサブディレクトリを含めて削除します。
メッセージを、System.outかファイルに出力します。
| 属性 | 説明 | 必須 |
| message | 出力するメッセージ。 | Yes。ただし、この要素内のデータが文字の節で述べた文字でなければ。 |
| file | メッセージを書き込むファイル。 | No |
| append | すでに存在するファイルに追加するかどうか? | No - デフォルトはfalseです。 |
<echo message="Hello world" />
<echo> This is a longer message stretching over two lines. </echo>
システムコマンドを実行します。 os属性を指定した時には、指定されたオペレーティングシステムのどれかの上で実行されている時にだけ、そのコマンドを実行します。
| 属性 | 説明 | 必須 |
| command | すべてのコマンドライン引数を伴った実行するコマンド。
推奨されないので、代わりにexecutableとネストした<arg>要素を使用してください。 |
2つのうちどれか一つ。 |
| executable | コマンドライン引数を伴わない実行するコマンド。 | |
| dir | コマンドを実行するディレクトリ。 | No |
| os | コマンドを実行するかもしれないオペレーティングシステムのリスト。 | No |
| output | コマンドの出力をリダイレクトするファイル。 | No |
| timeout | 指定された時間内にコマンドが終了しない場合に、それを停止します(ミリ秒で指定します)。 | No |
| failonerror | コマンドが0以外のリターンコードで終了した場合に、ビルドプロセスを停止するかどうか。 | No |
<exec dir="${src}" executable="dir" os="windows" output="dir.txt" />
コマンドライン引数は、ネストした<arg>要素として指定します。
コマンドライン引数を参照してください。
ネストした<env>要素で、
システムコマンドに渡す環境変数を指定することができます。
<env>を使って変数を指定する場合には、現在のAntプロセスの環境を、システムコマンドに渡せないことに注意してください。
| 属性 | 説明 | 必須 |
| key | 環境変数の名前。 | Yes |
| value | 環境変数のリテラル値。 | どれか一つだけ。 |
| path | パス類似環境変数の値。 パスの区切りとして、; や :を使用することができ、Antはそれをプラットフォームのローカルな慣習に合わせて変換します。 | |
| file | 環境変数の値。 Antが、ファイルの絶対ファイル名に置換します。 |
<exec executable="emacs" > <env key="DISPLAY" value=":1.0" /> </exec>
これは、Xウィンドウシステムのディスプレイ1で、emacsを起動します。
<exec ... >
<env key="PATH" path="${java.library.path}:${basedir}/bin" />
</exec>
これは、システムコマンドのPATHに、${basedir}/binを追加します。
注意: 単純にarg要素を使って引数を指定すると動作しても、それらをスペースで区切ったら、JDKのより新しいバージョンに切り替えると動かないかもしれません。 JDK < 1.2では、それらを呼び出すプログラムに独立の引数として渡しますが、 JDK >= 1.2では、それらをまとまった一つの引数として渡すので、これが大部分の呼び出しが失敗する原因です。
注意2: antをWindowsで使用すると、コマンドを実行するごとに新しいDOS-Windowがポップアップしますが、これはあなたが使用しているJDKの問題です。 この問題は、すべての1.2以前のJDKで起ります。
システムコマンドを実行します。 os属性を指定した時には、指定されたオペレーティングシステムのどれかの上で実行されている時にだけ、そのコマンドを実行します。
ファイルセットの数のファイルと/またはディレクトリを、システムコマンドに引数として渡します。
少なくとも、一つのネストした<fileset>が必要です。
| 属性 | 説明 | 必須 |
| executable | コマンドライン引数を伴わない実行するコマンド。 | Yes |
| dir | コマンドを実行するディレクトリ。 | No |
| os | コマンドを実行するかもしれないオペレーティングシステムのリスト。 | No |
| output | コマンドの出力をリダイレクトするファイル。 | No |
| timeout | 指定された時間内にコマンドが終了しない場合に、それを停止します(ミリ秒で指定します)。 | No |
| failonerror | コマンドが0以外のリターンコードで終了した場合に、ビルドプロセスを停止するかどうか。 | No |
| parallel | コマンドを一回だけ実行して、すべてのファイルを引数として付加します。 デフォルトはtrueです。 falseの場合には、コマンドを各ファイルごとに一回実行します。 | No |
| type | file、dir、bothの中の一つです。 fileを設定した場合には、プレーンファイルの名前だけをコマンドに送ります。 dirを設定した場合には、ディレクトリの名前だけを考慮します。 | No, デフォルトはfile。 |
このタスクに対してファイルを定義するために、
任意の数のネストした<fileset>要素と
どこかで定義されている<fileset>を使用することができます。
コマンドライン引数は、ネストした<arg>要素として指定します。
コマンドライン引数を参照してください。
<env>要素で、
システムコマンドに渡す環境変数を指定することができます。
execについての節の解説を参照してください。
<env>を使って変数を指定する場合には、現在のAntプロセスの環境を、システムコマンドに渡せないことに注意してください。
<execon executable="ls" >
<arg value="-l" />
<fileset dir="/tmp">
<patternset>
<exclude name="**/*.txt" />
</patternset>
</fileset>
<fileset refid="other.files" />
</execon>
これは/tmp下の.txtで終了しないすべてのファイルと、id other.filesを持つファイルセットのすべてのファイルの絶対ファイル名をコマンドラインに追加して、ls -lを実行します。
現在のビルドを終了します(BuildExceptionを投げるだけです)が、付加情報を出力するように選択できます。
| 属性 | 説明 | 必須 |
| message | ビルドが終了した理由についての詳しい情報を知らせるメッセージ。 | No |
<fail/>
これは、現在のビルドを終了しますが、何も情報を知らせません。
BUILD FAILED build.xml:4: No message
<fail message="Something wrong here."/>
これは現在のビルドを終了し、次のようなメッセージを出力します。
BUILD FAILED build.xml:4: Something wrong here.
このプロジェクトにトークンフィルタを設定したり、入力ファイルから複数のトークンフィルタを読み込んでフィルタとして設定します。 プロジェクトの共通のメソッドを使ってファイルのコピー操作を実行するすべてのタスクが、トークンフィルタを使用します。
注意 1: トークン文字列は、区切り文字(@)を含んではいけません。
注意2: token属性とvalue属性か、filterfile属性のどちらか一方だけを指定しなければいけません。
| 属性 | 説明 | 必須 |
| token | @を含まないトークン文字列 | Yes* |
| value | ファイルをコピーする時にトークンを置換するために指定する文字列。 | Yes* |
| filtersfile | フィルタを読み込まなければならないファイル。 このファイルは、プロパティファイルとしてフォーマットしなければいけません。 | Yes* |
* パラメタ表の注意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ファイルからすべてのプロパティエントリを読み込んで、フィルタとして設定します。
テキストファイルをローカルに一致させます。
修正するファイルの集合を絞り込むこともできます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを作成して、
ネストした<include>と<exclude>、
<patternset>要素のように、<fileset>のすべての属性(dirはsrcdirになります)をサポートします。
| 属性 | 説明 | 必須 |
| srcDir | 修正するファイルを探す場所。 | Yes |
| destDir | 修正したファイルを保存する場所。 デフォルトはsrcDirです(オリジナルファイルを置換します)。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| cr | キャリッジリターン (CR) 文字をどのように処理するかを指定します。
このプロパティの有効な値は、次のとおりです。
注意: このプロパティに"asis"を指定しない限り、LFの直前でない余分なCR文字は削除されます。 |
No |
| tab | タブ文字をどのように処理するかを指定します。
このプロパティの有効な値は、次の通りです。
注意: このプロパティに"asis"を指定しない限り、行末の空白以外の文字の後の余分なスペースやタブは、削除されます。 |
No |
| tablength | TABストップの文字数。 2の正の累乗でなければいけません。 このパラメタのデフォルトは8です。 | No |
| eof | DOSのファイル終端文字 (control-Z) をどのように処理するかを指定します。
このプロパティの有効な値は、次の通りです。
|
No |
<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をどのエディタを使って見るかを知る必要がなくなります。
keystoreファイルに暗号鍵を生成します。
| 属性 | 説明 | 必須 |
| alias | 追加するエイリアス | Yes. |
| storepass | キーストアファイル保護のためのパスワード。 | Yes. |
| keystore | キーストアファイルの場所。 | No |
| storetype | キーストアのタイプ。 | No |
| keypass | 秘密鍵のパスワード (異なる場合) | No |
| sigalg | 署名に使用するアルゴリズム。 | No |
| keyalg | 名前と値の組を生成する時に使用する方法。 | No |
| verbose | 署名する時の詳しいメッセージ出力 (true | false) | No |
| dname | エンティティの識別名 | dname要素が指定されない場合はYes |
| validity | 証明書が何日間有効かを指定します (整数) | No |
| keysize | 生成する鍵のサイズを指定します (整数) | No |
この代わりに、dnameという名前の副要素を識別名を作成して、それを名前と値を持つparam要素を使って指定することができます。 この副要素を使う時には、プロパティは自動的にエンコードされ、','は置換されます。
次の2つの例は、まったく同じです。
<genkey alias="apache-group" storepass="secret" dname="CN=Ant Group, OU=Jakarta Division, O=Apache.org, C=US" />
<genkey alias="apache-group" storepass="secret" > <dname> <param name="CN" value="Ant Group"/> <param name="OU" value="Jakarta Division"/> <param name="O" value="Apache.Org"/> <param name="C" value="US"/> </dname> </genkey>
URLからファイルを取得します。 verboseオプションが"on"の時には、このタスクは100KB取得するごとに'.'を表示します。
自動的にビルドをする時には、CVSタスク上で このタスクを選択しなければいけません。 CVSは、圧縮したアーカイブをhttp/ftpでロードするよりも、著しく遅いです。
usetimestampsオプションによって、リモートファイルがローカルコピーより新しい場合にだけ取得するようにダウンロードを制御することができます。 ローカルコピーが存在しない場合には、常にダウンロードします。 ファイルをダウンロードした時には、JVMがJava 1.2以降の場合に、ダウンロードしたファイルのタイムスタンプはリモートのタイムスタンプに設定されます。 注意: このタイムスタンプ機能は、HTTPプロトコルを使ってダウンロードした時にだけ動作します。| 属性 | 説明 | 必須 |
| src | ファイルを取得する場所のURL。 | Yes |
| dest | 取得したファイルを保存する場所。 | Yes |
| verbose | 詳しい進行状況を表示します ("on"/"off")。 | No |
| ignoreerrors | エラーを記録しても、致命的なものとして扱いません。 | No |
| usetimestamps | ローカルコピーのタイムスタンプを元にファイルをダウンロードするかどうか判断します。 HTTPのみ。 | No |
<get src="http://jakarta.apache.org/" dest="help/index.html" />
http://jakarta.apache.org/のインデックスページを取得して、ファイルhelp/index.htmlとして保存します。
<get src="http://jakarta.apache.org/builds/tomcat/nightly/ant.zip" dest="optional.jar" verbose="true" usetimestamps="true"/>
ローカルコピーが存在しないか、古い場合に、Tomcatの配布から毎夜作成されるantのビルドを取得します。 進行状況を知るためにverboseオプションを使用します。
gzipファイルを展開します。
destがディレクトリの場合には、作成するファイルの名前はsrcと同じです(".gz"拡張子が存在する場合には、取り除きます)。 destが省略された場合には、srcの親ディレクトリに展開します。 元のファイルが展開先のファイルより新しいか、存在しない場合にだけファイルを展開します。
| 属性 | 説明 | 必須 |
| src | 展開するファイル。 | Yes |
| dest | 展開先のファイルかディレクトリ。 | No |
<gunzip src="test.tar.gz"/>
これは、test.tar.gzからtest.tarに展開します。
<gunzip src="test.tar.gz" dest="test2.tar"/>
これは、test.tar.gzからtest2.tarに展開します。
<gunzip src="test.tar.gz" dest="subdir"/>
これは、test.tar.gzからsubdir/test.tarに展開します(subdirがディレクトリと仮定します)。
ファイルをgzipします。
| 属性 | 説明 | 必須 |
| src | gzipするファイル。 | Yes |
| zipfile | 作成するファイル。 | Yes |
<gzip src="test.tar" zipfile="test.tar.gz" />
Jarはファイルの集合です。
basedir属性は、jarを実行するディレクトリを指定します。
ファイルのパーミッションは、生成したjarファイルには格納されないことに注意してください。
jarアーカイブのファイルの集合を絞り込むこともできます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを作成して、
ネストした<include>と<exclude>、
<patternset>のように、<fileset>のすべての属性(dirはbasedirになります)をサポートします。
より融通が聞くように、ネストしたファイルセットを使用して、一つのJARに異なるファイルのツリーを一緒に格納するために複数のファイルセットを指定できます。 詳細と例は、Zipを参照してください。
manifestが省略された場合には、Antが簡単なものを追加します。 あなたのファイルの集合に、META-INF/MANIFEST.MFを含めてはいけません。
whenemptyパラメタは、マッチするファイルがない時にどうするかを制御します。
create (デフォルト)の場合には、manifestだけのJARを作成します。
skipの場合には、JARを作成せずに、警告を出力します。
failの場合には、JARを作成せずに、ビルドがエラーで停止します。
| 属性 | 説明 | 必須 |
| jarfile | 作成するJARファイル。 | Yes |
| basedir | ファイルをJARするディレクトリ。 | No |
| compress | データを保存するだけでなく、圧縮する。デフォルトはtrue。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| manifest | 使用するMANIFESTファイル。 | No |
| whenempty | 使用するファイルがマッチしない場合の挙動。 | No |
<jar jarfile="${dist}/lib/app.jar" basedir="${build}/classes" />
これは${build}/classesディレクトリ内のすべてのファイルを、${dist}/libディレクトリ内にあるapp.jarと呼ぶファイルの中にjarします。
<jar jarfile="${dist}/lib/app.jar"
basedir="${build}/classes"
excludes="**/Test.class"
/>
これは、${build}/classesディレクトリ内のすべてのファイルを、${dist}/libディレクトリ内にあるapp.jarと呼ぶファイルにjarします。
ただし、Test.classという名前のファイルは除外されます。
<jar jarfile="${dist}/lib/app.jar"
basedir="${build}/classes"
includes="mypackage/test/**"
excludes="**/Test.class"
/>
これは、${build}/classesディレクトリ内のすべてのファイルを、${dist}/libディレクトリ内にあるapp.jarと呼ぶファイルにjarします。
ただし、ディレクトリmypackage/testの下のファイルだけで、Test.classという名前のファイルは除外されます。
<jar jarfile="${dist}/lib/app.jar">
<fileset dir="${build}/classes"
excludes="**/Test.class"
/>
<fileset dir="${src}/resources"/>
</jar>
これは、${build}/classesディレクトリだけでなく、${src}/resourcesディレクトリ内のすべてのファイルを一緒に、${dist}/libディレクトリ内にあるapp.jarと呼ぶファイルにjarします。
ただし、Test.classという名前のファイルは除外されます。
${build}/classes/mypackage/MyClass.classと${src}/resources/mypackage/image.gifのようなファイルが存在する場合には、JARの同じディレクトリ内(そして、これはJavaでは同じパッケージ内だと考えられます)に格納されます。
(Antの)実行中のVMか、指定された場合には別のVMをフォークして、Javaのクラスを実行します。
System.exit()はVMを終了すると同時にAntも終了させるので、実行されるクラスではこれを呼び出さないように注意してください。 この問題が発生した場合には、 System.exit()が他のVMを停止させても、現在Antを実行中のVMは停止させないように、fork属性を設定することを強く推奨します。
| 属性 | 説明 | 必須 |
| classname | 実行するJavaのクラス。 | Yes |
| args | 実行するクラスに与える引数。
推奨されません。
代わりにネストした<arg>要素を使用してください。 |
No |
| classpath | 使用するクラスパス。 | No |
| classpathref | 使用するクラスパスを、任意の場所で定義したパスに対する参照として指定します。 | No |
| fork | 有効にした場合には、クラスの実行を別のVMでおこないます。 (デフォルトでは無効です) | No |
| jvm | Javaバーチャルマシンを起動するコマンドで、 デフォルトは'java'です。 このコマンドは、java.lang.Runtime.exec()で実行します。 forkが無効な場合は、無視されます。 | No |
| jvmargs | フォークするVMに渡す引数(forkが無効な場合は無視されます)。
推奨されません。代わりにネストした<jvmarg>要素を使用してください。 |
No |
| maxmemory | フォークするVMに割り当てるメモリの最大量 (forkが無効な場合は無視されます)。 | No |
| failonerror | コマンドが0以外のリターンコードで終了した場合には、ビルドプロセスを停止します。 forkがtrueな場合にのみ有効です。 | No |
| dir | VMを起動するディレクトリ。(forkが無効な場合には、無視されます)。 | No |
クラスやフォークしたVMに引数を指定するために、ネストした<arg>と<jvmarg>要素を使用します。
コマンドライン引数を参照してください。
クラスに必要なシステムプロパティを指定するためにネストした<sysproperty>要素を使用します。
これらのプロパティは、クラスの実行中のVM(Antを実行しているVMか、フォークしたVMのどちらか)に対して利用可能になります。
この要素に対する属性は、環境変数と同じです。
Javaのclasspath属性は、PATH類似構造であり、ネストした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>
(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がデフォルトです。
| 属性 | 説明 | 必須 |
| srcdir | Javaファイルの場所。 | ネストした<src>要素が存在しない限りYes |
| destdir | クラスファイルを保存する場所。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| classpath | 使用するクラスパス。 | No |
| bootclasspath | ブートストラップ用クラスファイルの場所。 | No |
| classpathref | 使用するクラスパスですが、他で定義されているPATHに対する参照を指定します。 | No |
| bootclasspathref | ブートストラップ用クラスファイルの場所ですが、、他で定義されているPATHに対する参照を指定します。 | No |
| extdirs | インストールした拡張の場所。 | No |
| encoding | ソースファイルのエンコーディング。 | No |
| debug | デバッグ情報を付けてコンパイルするかどうかを指定します ("off")。 | No |
| optimize | 最適化オプションを付けてコンパイルするかどうかを指定します("off")。 | No |
| deprecation | deprecationオプションを付けてコンパイルするかどうかを指定します("off")。 | No |
| target | 指定したVMのバージョンに対して、クラスファイルを生成します。 たとえば、"1.1"や"1.2"です。 | No |
| verbose | コンパイラにより多くのメッセージを出力するかどうかを指定します。 | No |
| depend | 依存性の追跡をサポートしているコンパイラ(jikesやclassic)において、それを有効にします。 | No |
このタスクは、暗黙のファイルセットを持っていて、
ネストした<include>と<exclude>、<patternset>要素と同様に、
<fileset>の属性(dirはsrcdirになります)のすべてをサポートしています。
Javacのsrcdirとclasspath、
bootclasspath、extdirs属性は、href="#path">PATH類似構造であり、それぞれネストしたsrcとclasspath、bootclasspath、extdirs要素によって設定することができます。
<javac srcdir="${src}"
destdir="${build}"
classpath="xyz.jar"
debug="on"
/>
これは、ディレクトリ${src}の中のすべての.javaファイルをコンパイルして、ディレクトリ${build}に.classファイルを保存します。
使用するクラスパスはxyz.jarを含んでいて、デバッグ情報がonになっています。
<javac srcdir="${src}"
destdir="${build}"
includes="mypackage/p1/**,mypackage/p2/**"
excludes="mypackage/p1/testpackage/**"
classpath="xyz.jar"
debug="on"
/>
これは、ディレクトリ${src}の中のすべての.javaファイルをコンパイルして、ディレクトリ${build}に.classファイルを保存します。
使用するクラスパスはxyz.jarを含んでいて、デバッグ情報がonになっています。
ただし、mypackage/p1とmypackage/p2の下のファイルだけを使用します。
mypackage/p1/testpackageディレクトリの中のファイルは、コンパイルやコピーをしません。
<javac srcdir="${src}:${src2}"
destdir="${build}"
includes="mypackage/p1/**,mypackage/p2/**"
excludes="mypackage/p1/testpackage/**"
classpath="xyz.jar"
debug="on"
/>
これは、前のサンプルと同じですが、プロパティsrc2で定義される二番目のソースパスが追加されています。
これは、次のようなネストした要素を使用しても記述できます。
<javac destdir="${build}"
classpath="xyz.jar"
debug="on">
<src path="${src}" />
<src path="${src2}" />
<include name="mypackage/p1/**,mypackage/p2/**" />
<exclude name="mypackage/p1/testpackage/**" />
</javac>
注意: Windows上でAntを使用する場合には、外部コンパイラを使用するたびに新しいDOSのウィンドウがポップアップしますが、これはあなたが使用しているJDKの問題かもしれません。 この問題は、JDK以前のすべてのJDKで発生する可能性があります。
javadocツールを使用してコードのドキュメントを生成します。
処理するJavaソースファイルを探すために、ソースディレクトリを再帰的に走査しますが、そのうち包含規則にマッチするものだけがjavadocツールに渡されます。 このためにワイルドカード、パッケージ名を選択するためにワイルドカードが使用できるので、冗長さと全体の管理コストを削減することができます。 しかし、このタスクにはjavacタスクのような"変更された"ファイルの概念はありません。 これは、このタスクを実行するごとに、すべてのパッケージを処理することを意味しています。 しかし、一般的に、このタスクをそんなに頻繁に使用することはありません。
このタスクは、javadocのバージョン (1.1と1.2) が異なっても同様に動作しますが、1.2の属性が1.1のVMで実行する場合に無視されるという明白な制約があります。
注意: javadocはSystem.exit()を呼び出すので、機能に支障を与えずにjavadocをantと同一VM内で実行することはできません。 この理由から、このタスクは常に新たにVMを生成します。 javadocは一般に重いアプリケーションであり、頻繁に実行されることはないので、このオーバヘッドは重要ではありません。
注意: packagelist属性によって、Antファイルとは別のドキュメントのパッケージのリストを指定することができます。 ただし、build.xmlファイル内ですべてを指定する方が、より実際的です。 このオプションは、javadocのこのオプションを使用することで、通常のmakefileからの移行を容易にするために追加されています。 packagelistでリストされているパッケージはチェックされないので、パッケージが失われていたり、壊れている場合でさえも、タスクを実行します。 だから、既存のmakefileから変換したい場合に、このオプションを使用してください。 一旦うまく実行できるようになったら、通常の記法に切り替えるべきです。
DEPRECATION: javadoc2タスクは、単にjavadocタスクを指定するだけで、互換性を保つために残されています。 このタスクは将来のバージョンでは削除される可能性があるので、代わりにjavadocを使用することを強く勧めます。
| 属性 | 説明 | 利用可能環境 | 必須 |
| sourcepath | ソースファイルを探す場所を指定します。 | all | 少なくとも二つのうち一つか、ネストした<sourcepath>。 |
| sourcepathref | ソースファイルを探す場所を任意の場所で定義されたPATHに対する参照を用いて指定します。 | all | |
| destdir | ファイルを出力先ディレクトリ。 | all | Yes |
| maxmemory | javadocを実行するVMに割り当てる最大メモリ量。 | all | No |
| sourcefiles | ソースファイルの空白で区切られたリスト。 | all | 少なくとも2つのうち一つ。 |
| packagenames | (ワイルドカードで終了する) パッケージファイルのコンマで区切られたリスト | all | |
| packageList | 処理するパッケージを含むファイル名。 | all | No |
| classpath | ユーザのクラスファイルを探す場所の指定。 | all | No |
| Bootclasspath | ブートストラップクラスローダがロードするクラスファイルの場所をオーバライドします。 | 1.2 | No |
| classpathref | 任意の場所で指定された参照によって、ユーザのクラスファイルを探す場所を指定します。 | all | No |
| bootclasspathref | 任意の場所で定義したPATHに対する参照によって、ブートストラップクラスローダがロードするクラスファイルの場所をオーバライドします。 | 1.2 | No |
| Extdirs | インストールした拡張の場所をオーバライドします。 | 1.2 | No |
| Overview | HTMLファイルから概要ドキュメントを読み込みます。 | 1.2 | No |
| Public | publicクラスとメンバのみを表示します。 | all | No |
| Protected | protected/publicクラスとメンバを表示します (デフォルト) | all | No |
| Package | package/protected/publicクラスとメンバを表示します。 | all | No |
| Private | すべてのクラスとメンバを表示します。Show all classes and members | all | No |
| Old | JDK 1.1をエミュレートするdocletを使用して出力を生成します。 | 1.2 | No |
| Verbose | Javadocの動作状況についてのメッセージを出力します。 | 1.2 | No |
| Locale | 使用するロケール。例、en_US や en_US_WIN | 1.2 | No |
| Encoding | ソースファイルエンコーディング名。 | all | No |
| Version | @versionパラグラフを含めます。 | all | No |
| Use | クラスとパッケージの使用方法のページを作成します。 | 1.2 | No |
| Author | @authorパラグラフを含めます。 | all | No |
| Splitindex | 索引を一文字に対して一つのファイルに分割します。 | 1.2 | No |
| Windowtitle | ドキュメントのブラウザのウィンドウの題名。(テキスト) | 1.2 | No |
| Doctitle | パッケージの索引の(最初の)ページに題名を含めます (HTMLコード) | 1.2 | No |
| Header | 各ページにヘッダのテキストを含めます。(HTMLコード) | 1.2 | No |
| Footer | 各ページにフッタのテキストを含めます。(HTMLコード) | 1.2 | No |
| bottom | 各ページの下部にテキストを含めます。(HTMLコード) | 1.2 | No |
| link | 指定されたURLでjavadoc出力にリンクを作成します。 | 1.2 | No |
| linkoffline | <url2>にあるパッケージリストを用いて、<URL>のdocsにリンクを作成します。 | 1.2 | No |
| group | 指定したパッケージを概要ページで一緒にグループ化します。 | 1.2 | No |
| nodeprecated | @deprecated情報を含めません。 | all | No |
| nodeprecatedlist | 推奨されないリストを生成しません。 | 1.2 | No |
| notree | クラス階層を生成しません。 | all | No |
| noindex | 索引を生成しません。 | all | No |
| nohelp | ヘルプのリンクを生成しません。 | 1.2 | No |
| nonavbar | ナビゲーションバーを生成しません。 | 1.2 | No |
| serialwarn | FUTURE: @serialタグについての警告を生成します。 | 1.2 | No |
| helpfile | FUTURE: 使用するHTMLのヘルプファイルを指定します。 | 1.2 | No |
| stylesheetfile | 使用するCSSスタイルシートを指定します。 | 1.2 | No |
| charset | FUTURE: 生成したドキュメントをクロスプラットフォームで閲覧するためのcharset。 | 1.2 | No |
| docencoding | 出力ファイルのエンコーディング名。 | 1.1 | No |
| doclet | ドキュメントを生成するために使用するdocletを起動するクラスファイルを指定します。 | 1.2 | No |
| docletpath | -docletオプションと一緒に指定するdocletクラスファイルへのパスを指定します。 | 1.2 | No |
| docletpathref | 任意の場所で定義されたPATHに対する参照によって、-docletオプションと一緒に指定するdocletクラスファイルへのパスを指定します。 | 1.2 | No |
| additionalparam | javadocコマンドラインに追加するパラメタを追加します。 docletsにとって便利です。 | 1.2 | No |
| failonerror | コマンドが0以外の返り値で終了した場合には、ビルドプロセスを停止します。 | all | No |
javadoc出力に対して、指定したURLでリンクします。 これは、linkとlinkoffline属性と同じ役目を果たします。 どちらかの (または、同時に両方の) 記法を使用できますが、 ネストした要素の方が、簡単に複数の引数を指定することができます。
| 属性 | 説明 | 必須 |
| href | リンクしたい外部のドキュメントのURL。 | Yes |
| offline | ドキュメント生成時に、このリンクがオンラインで利用できない場合にtrueを指定します。 | No |
| packagelistLoc | 外部のドキュメントのパッケージリストファイルを含むディレクトリの場所。 | オフライン属性がtrueの場合のみ。 |
概要ページのそれぞれのパッケージを、あなたが指定したグループに、一グループが一つのテーブルになるように分割します。 これは、group属性と同じ役目を果たします。 どちらかの記法(または同時に両方)を使用することができますが、ネストした要素の方が複数の引数を簡単に指定することができます。
| 属性 | 説明 | 必須 |
| title | このグループの題名。 | Yes |
| packages | このグループに含まれるパッケージのリスト。 | Yes |
ネストした要素のdocletは、javadocが入力ソースファイルを処理するために使用するdocletを指定するために使用します。
多くの標準のjavadoc引数は、実際には標準docletの引数です。
javadocタスクの属性を指定する場合には、ネストした要素<doclet>で指定されたdocletに渡されます。
だから、使用したdocletが解釈できる場合には、そのような属性を指定するだけです。
docletが追加パラメタを必要とする場合には、
<doclet>要素内の<param>要素で指定することができます。
これらのパラメタは、簡単な文字列に制限されます。
doclet要素の使用例を、次に示します。
<javadoc ...>
<doclet name="theDoclet"
path="path/to/theDoclet">
<param name="-foo" value="foovalue"/>
<param name="-bar" value="barvalue"/>
</doclet>
</javadoc>
Javadocのsourcepath, classpathと
bootclasspath属性は、PATH類似構造であり、それぞれネストしたsourcepath,
classpathとbootclasspath要素で設定することができます。
<javadoc packagenames="com.dummy.test.*"
sourcepath="src"
destdir="docs/api"
author="true"
version="true"
use="true"
windowtitle="Test API"
doctitle="<h1>Test</h1>"
bottom="<i>Copyright © 2000 Dummy Corp. All Rights Reserved.</i>">
<group title="Group 1 Packages" packages="com.dummy.test.a*"/>
<group title="Group 2 Packages" packages="com.dummy.test.b*"/>
<link offline="true" href="http://java.sun.com/products/jdk/1.2/docs/api/" packagelistLoc="C:\tmp"/>
<link href="http://developer.java.sun.com/developer/products/xml/docs/api/"/>
</javadoc>
SMTPメールを送信するタスクです。
| 属性 | 説明 | 必須 |
| from | 送信者の電子メールアドレス。 | Yes |
| tolist | 受信者のカンマで区切られたリスト。 | Yes |
| message | 送信する電子メールの本文中のメッセージ。 | Yes |
| files | 送信する電子メールの本文中のテキストのファイル名。 複数のファイルを指定する場合には、カンマで区切ります。 | |
| mailhost | メールサーバのホスト名。 | No、デフォルトでは"localhost"に送信します。 |
| subject | 電子メールの題名行。 | No |
<mail from="me" tolist="you" subject="Results of nightly build"
files="build.log"/>
これは、電子メールを、Results of nightly buildという題名で、メッセージの本文にbuild.logの中身を取り込んで、meからyouに送信します。
ディレクトリを作成します。 必要な場合には、存在しない親ディレクトリも作成します。
| 属性 | 説明 | 必須 |
| dir | 作成するディレクトリ。 | Yes |
<mkdir dir="${dist}" />
これは、ディレクトリ${dist}を作成します。
<mkdir dir="${dist}/lib" />
これは、ディレクトリ${dist}/libを作成します。
ファイルを新しいファイルやディレクトリに移動したり、ファイルの集合を新しいディレクトリに移動します。 デフォルトでは、移動先のファイルがすでに存在する場合には、オーバーライトします。 overwriteがオフになっている場合には、移動するファイルが移動先のファイルより新しいか、移動先のファイルが存在しない場合にのみ、ファイルを移動します。
FileSetは、todirディレクトリに移動するファイルの集合を選択するために使用します。
| 属性 | 説明 | 必須 |
| file | 移動するファイル。 | One of file or at least one nested fileset element |
| tofile | 移動先のファイル。 | With the file attribute, either tofile or todir can be used. With a nested fileset, only todir is allowed. |
| todir | 移動先のディレクトリ。 | |
| overwrite | 移動先ファイルの方が新しい場合でも、すでに存在するファイルをオーバーライトします。(デフォルトは、"true") | No |
| filtering | 移動中にトークンフィルタリングを実行するかどうかを指定します。 どのようにフィルタが動作するかについての詳細は、filterタスクを参照してください。 | No |
| flatten | 移動元のディレクトリのディレクトリ構造を無視して、すべてのファイルをtodir属性で指定した単一のディレクトリ中に移動します (デフォルトは"no")。 | No |
| includeEmptyDirs | ネストしたFileSetで指定した中の空のディレクトリをコピーします。 デフォルトは"yes"です。 | No |
ファイルの移動 (ファイル名の変更)
<move file="file.orig" tofile="file.moved" />
ファイルをディレクトリに移動
<move file="file.orig" todir="dir/to/move/to" />
ディレクトリを新しいディレクトリに移動
<move todir="new/dir/to/move/to">
<fileset dir="src/dir"/>
</move>
ファイルの集合を新しいディレクトリに移動
<move todir="some/new/dir" >
<fileset dir="my/src/dir" >
<include name="**/*.jar" />
<exclude name="**/ant.jar" />
</fileset>
</move>
diffファイルをオリジナルに適用します。
| 属性 | 説明 | 必須 |
| patchfile | diffの出力を保存するファイル | Yes |
| originalfile | パッチする元のファイル | No, diffファイルから推測しようとします |
| backups | パッチを当てていないファイルのバックアップを保存します | No |
| quiet | エラーが発生しても、無視して動作します | No |
| reverse | パッチが新・旧ファイルを逆にして作成されたと仮定します | No |
| ignorewhitespace | 空白の違いを無視します | No |
| strip | ファイル名の最初からnum個のスラッシュを含む最小のプレフィックスを削除します。 | No |
<patch patchfile="module.1.0-1.1.patch" />
これは、module.1.0-1.1.patchの中のdiffをdiffの出力のファイル名から推測されるベースディレクトリ内のファイルに適用します。
<patch patchfile="module.1.0-1.1.patch" strip="1" />
これは、上の例と似ていますが、一つの先頭のディレクトリ部分を削除します。 すなわち、diffの出力が以下のような場合には、
--- a/mod1.0/A Mon Jun 5 17:28:41 2000 +++ a/mod1.1/A Mon Jun 5 17:28:49 2000先頭のa/を削除します。
プロジェクトのプロパティ (名前と値で) や、プロパティの集合 (ファイルやリソースから)を設定します。
ユーザがプロパティを設定したり、親プロジェクト内でプロパティを設定した時(このプロジェクトはantタスクで起動します)には、このプロパティは設定できないために、無視されます。 これは、現在のプロジェクト外で設定されたプロパティは常に現在のプロジェクトのプロパティをオーバーライドすることを意味しています。
プロパティを設定するためには、次の4つの方法があります。
3つの方法を組み合わせることもできますが、一度に一つしか使用できません。 たとえば、プロパティが設定される順番で問題が発生するかもしれません。
プロパティの値部分は、他のプロパティへの参照を含むかもしれません。 これらの参照は、プロパティが設定される時に解決されます。 これは、プロパティファイルからロードされたプロパティでも同じです。
| 属性 | 説明 | 必須 |
| name | 設定するプロパティの名前。 | Yes |
| value | プロパティの値。 | Yes |
| refid | 任意の場所で定義したオブジェクトへの参照。 PATH類似構造やプロパティへの参照だけが適切です。 | |
| resource | プロパティファイルのリソース名。 | |
| file | プロパティファイルのファイル名。 | |
| location | プロパティに指定されたファイルの絶対ファイル名を設定します。 この属性の値が絶対パスの場合には、それは変更されません (/と\は現在のプラットフォームの慣習に合わせられます)。 そうでなければ、プロジェクトのbasedirへの相対パスとして解釈して、拡張されます。 |
<property name="foo.dist" value="dist" />
これは、プロパティfoo.distに値"dist"を設定します。
<property file="foo.properties" />
これは、"foo.properties"という名前のファイルからプロパティの集合を読み込みます。
<property resource="foo.properties" />
これは、"foo.properties"という名前のリソースからプロパティの集合を読み込みます。
次のように、Antのすべてのビルドのグローバルなプロパティファイルを参照できることに注意してください。
<property file="${user.home}/.ant-global.properties" />
"user.home"プロパティは、Java仮想マシンがあなたのホームディレクトリに設定します。 Windowsにはホームディレクトリの概念はないので、このテクニックはWindowsよりもUnixに適しています。 私がテストしたJVMでは、Windows上のホームディレクトリは"C:\"です。 別のJVMの実装では、Windows上のホームディレクトリに他の値を使用するかもしれません。
このタスクは推奨されません。 代わりに、Moveタスクを使用してください。
与えられたファイルの名前を変更します。
| 属性 | 説明 | 必須 |
| src | 名前を変更するファイル。 | Yes |
| dest | ファイルの新しい名前。 | Yes |
| replace | 既存ファイルの置換を有効にする (デフォルト: on)。 | No |
<rename src="foo.jar" dest="${name}-${version}.jar" />
ファイルfoo.jarを${name}-${version}.jarに名前を変更します(nameとversion既定義のプロパティだと仮定しています)。
${name}-${version}.jarという名前のファイルがすでに存在している場合には、foo.jarに名前を変更する前にそれを削除します。
Replaceは、選択したファイルの指定された文字列が見つかると、別の文字列に置換するディレクトリベースのタスクです。
行をまたがるテキストを置換したい場合には、ネストした<replacetoken>要素を使用しなければいけません。
| 属性 | 説明 | 必須 |
| file | トークンを置換しなければならないファイル。 | 2つのうちどちらか一つ。 |
| dir | 複数のファイル内のトークンを置換する時に使用するベースディレクトリ。 | |
| token | 置換しなければならないトークン。 | ネストしたreplacetoken要素を使用しない限りYes。 |
| value | トークンの新しい値。 省略された時には空文字列("")が使用されます。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
<replace file="${src}/index.html" token="@@@" value="wombat" />
これは、ファイル${src}/index.html中に文字列"@@@"が見つかると、文字列"wombat"で置換します。
このタスクは、暗黙のファイルセットを持っていて、
ネストした<include>と<exclude>、<patternset>要素と同様に、
<fileset>の属性のすべてをサポートしています。
置換したい、または置換されるテキストのどちらかが行をまたがっている場合には、それを指定するためにネストした要素を使用できます。
<replace dir="${src}" value="wombat">
<include name="**/*.html" />
<replacetoken><[CDATA[multi line
token]]></replacetoken>
</replace>
これは、ディレクトリ${src}内のすべてのHTMLファイル内の文字列"multi
line\ntoken"を、文字列"wombat"で置換します。
\nは、プラットフォームに依存する改行を表します。
<replace file="${src}/index.html">
<replacetoken><[CDATA[two line
token]]></replacetoken>
<replacevalue><[CDATA[two line
token]]></replacevalue>
</replace>
ある特定のクラスにたいしてrmicコンパイラを実行します。
rmicは、(classname属性で指定した)ある一つのクラス、または一度に多くのクラス(ベース以下に存在する_Stubクラスと_Skelクラス以外のすべてのクラス)にたいして実行することができます。
rmicで処理するファイルの集合を絞り込むことができます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用することができます。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを持っていて、
ネストした<include>、<exclude>と<patternset>要素だけでなく、
<fileset>の属性のすべて
(dirの代わりにbaseになります)
をサポートしています。
| 属性 | 説明 | 必須 |
| base | コンパイルするファイルを保存する場所。 | Yes |
| classname | rmicが実行されるクラス。 |
No |
| filtering | トークンフィルタリングを実行するかどうかを指定します。 | No |
| sourcebase | rmicに"-keepgenerated"フラグを渡して、生成したソースファイルをベースディレクトリに移動します。 | No |
| stubversion | 生成するスタブコードのためにJDKのバージョンを指定します。 rmicに"-v1.1"オプションを渡すためには、"1.1"を指定します。 | No |
| classpath | コンパイル中に使用するクラスパス。 | No |
| classpathref | コンパイル中に使用するクラスパスを、 任意の場所で定義したPATHに対する参照で指定します。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、すべてのファイルを含みます。 | No |
| includesfile | ファイルの名前。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| verify | rmicでクラスを処理する前に、Remoteを実装しているかどうかをチェックします(デフォルトはfalse)。 | No |
rmicのclasspath属性は、PATH類似構造であり、さらにネストしたclasspath要素を使って設定することもできます。
<rmic classname="com.xyz.FooBar" base="${build}/classes" />
これは、クラスcom.xyz.FooBarに対してrmicコンパイラを実行します。
コンパイルされたファイルは、ディレクトリ${build}/classesに保存されます。
<rmic base="${build}/classes" includes="**/Remote*.class" />
これは、クラス名がRemoteで始まり、.classという拡張子を持つ${build}/classes以下のすべてのクラスにrmicコンパイラを実行します。
コンパイルされたファイルは、ディレクトリ${build}/classesに保存されます。
JARやZIPファイルにjarsignerコマンドラインツールを用いて署名します。
| 属性 | 説明 | 必須 |
| jar | 署名するJARファイル。 | Yes. |
| alias | 署名するためのエイリアス。 | Yes. |
| storepass | キーストアファイル保護のためのパスワード。 | Yes. |
| keystore | キーストアファイルの場所 | No |
| storetype | キーストアのタイプ | No |
| keypass | 秘密鍵のパスワード (異なる場合) | No |
| sigfile | .SF/.DSAファイルの名前。 | No |
| signedjar | 署名するJARファイルの名前。 | No |
| verbose | 署名する時の詳しいメッセージ出力 (true | false) | No |
| internalsf | 署名ブロックファイル中に.SFファイルを含みます (true | false)。 | No |
| sectionsonly | MANIFESTファイル全体のハッシュを計算しません (true | false)。 | No |
<signjar jar="${dist}/lib/ant.jar" alias="apache-group" storepass="secret" />
これは、"secret"パスワードでキーストアと秘密鍵にアクセスする エイリアス"apache-group"を用いて、ant.jarに署名します。
XSLTを用いてドキュメントの集合を処理します。
これは、XMLベースのドキュメントを表示したり、コードを生成する場合に便利です。
コピーするファイルの集合を絞り込むこともできます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを作成して、
ネストした<include>と<exclude>、
<patternset>のように、<fileset>のすべての属性(dirはbasedirになります)をサポートします。
| 属性 | 説明 | 必須 |
| basedir | 元のXMLファイルを探すディレクトリ。 | Yes |
| destdir | 結果を保存するディレクトリ。 | Yes |
| extension | ターゲットに使用したいファイルの拡張子。 何も指定したい場合には、デフォルトは"html"です。 | No |
| style | 使用するスタイルシートの名前。 | Yes |
| processor | 使用するXSLTプロセッサの名前。 使用できる値は、XSL:Pプロセッサには"xslp"、 Apache XMLプロジェクトのXalanには"xalan"、または任意のXSLTLiaisonクラスの名前です。 デフォルトはxslpまたはxalanのうち、あなたのクラスパス中で(この順で探して)見つかった方です。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、すべてのファイルを含みます。 | No |
| includesfile | ファイルの名前。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
<style basedir="doc" destdir="build/doc"
extension="html" style="style/apache.xml"/>
tarアーカイブを作成します。
basedir属性は、tarを実行するディレクトリです。
tarアーカイブのファイルの集合を絞り込むことができます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを作成して、
ネストした<include>と<exclude>、
<patternset>のように、<fileset>のすべての属性(dirはbasedirになります)をサポートします。
このタスクは圧縮はおこなわないことに注意してください。 .tar.gzパッケージを作成するために、GZipタスクを使用したくなるかもしれません。
| 属性 | 説明 | 必須 |
| tarfile | 作成するtarファイル。 | Yes |
| basedir | ファイルのtarを実行するディレクトリ。 | Yes |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、すべてのファイルを含みます。 | No |
| includesfile | ファイルの名前。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
<tar tarfile="${dist}/manual.tar" basedir="htdocs/manual" />
<gzip zipfile="${dist}/manual.tar.gz" src="${dist}/manual.tar" />
これは、htdocs/manualディレクトリ内のすべてのファイルを${dist}ディレクトリ内のmanual.tarというファイルにtarアーカイブしてから、それを圧縮するためにgzipタスクを実行します。
<tar tarfile="${dist}/manual.tar"
basedir="htdocs/manual"
excludes="mydocs/**, **/todo.html"
/>
これは、htdocs/manualディレクトリのすべてのファイルを、${dist}ディレクトリのmanual.tarというファイルにtarアーカイブします。
ディレクトリmydocs内のファイルや、todo.htmlという名前のファイルは除外されます。
タスクの定義を現在のプロジェクトに追加し、それによってこの新しいタスクが現在のプロジェクトで使用できるようになります。 このタスクを一意に同定できる名前と、このタスクを実装しているクラスの(パッケージまで含めた)フルの名前の2つの属性が必要です。
Taskdefは、システムにあなた独自のタスクを追加するために使用します。 "独自タスクの記述"を参照してください。
| 属性 | 説明 | 必須 |
| name | タスクの名前。 | Yes |
| classname | タスクを実装したフルのクラス名。 | Yes |
| classpath | classnameを検索する時に使用するクラスパス。 | No |
Taskdefのclasspath属性は、PATH類似構造であり、ネストしたclasspathによっても設定することができます。
<taskdef name="myjavadoc" classname="com.mydomain.JavadocTask" />
これは、Antでmyjavadocと呼ぶタスクを利用可能にします。
クラスcom.mydomain.JavadocTaskが、このタスクを実装しています。
ファイルの更新時刻を変更し、できるかぎり同じ時間にします。
JDK 1.1では、現在作業をしている更新時刻を持つ新しいファイルの作成だけで、他の場合は警告を出します。
| 属性 | 説明 | 必須 |
| file | ファイルの名前。 | Yes |
| millis | 新しいファイルの更新時刻を1970年1月1日の夜中からの経過ミリ秒で指定します。 | No |
| datetime | MM/DD/YYYY HH:MM AM_or_PMというフォーマットでファイルの更新時刻を指定します。 | No |
millisとdatetimeが省略された場合には、現在の時刻だと仮定します。
<touch file="myfile" />
これは、myfileが存在しない場合には作成し、その更新時刻を現在の時刻に変更します。
<touch file="myfile" datetime="06/28/2000 2:02 pm" />
これは、myfileが存在しない場合には作成し、その更新時刻を2000年6月28日午後2時2分 (24時間で表すと14時2分)に変更します。
現在のプロジェクトで、DSTAMPとTSTAMP、TODAYプロパティを設定します。 DSTAMPは"yyyymmdd"フォーマットで、TSTAMPは"hhmm"フォーマット、TODAYは"month day year"フォーマットです。
これらのプロパティは、ビルドファイル内で使用できます。 たとえば、タイムスタンプの付いたファイル名を作成したり、ドキュメント中の指示したリリース日のようなplaceholderタグを置換するために使われます。 このタスクの一番良い場所は、初期化ターゲット中です。
| 属性 | 説明 | 必須 |
<tstamp/>
ターゲットファイルが、ソースファイルの集合よりも新しい場合に、プロパティを設定します。 ソースファイルは、ネストした<srcfiles>要素で指定し、これはファイルセットです。
ターゲットファイルのタイムスタンプがすべてのソースファイルより新しい場合には、プロパティの値部分は、trueに設定されます。
通常は、このタスクを 指定したファイルの相対的な新旧関係に依存するターゲットの実行を中止するために便利なプロパティを設定するために使用します。
| 属性 | 説明 | 必須 |
| property | 設定するプロパティの名前。 | Yes |
| targetfile | 状態を決定したいファイル。 | Yes |
<uptodate property="xmlBuild.notRequired" targetfile="${deploy}\xmlClasses.jar" >
<srcfiles dir= "${src}/xml" includes="**/*.dtd" />
</uptodate>
これは、${deploy}/xmlClasses.jarが、${src}/xmlディレクトリ内のどのDTDファイルよりも新しい場合に、プロパティxmlBuild.notRequiredに値"true"を設定します。
sets the property xmlBuild.notRequired to the value "true"
if the ${deploy}/xmlClasses.jar is more up to date than any of the DTD files in the ${src}/xml directory.
zipファイルやwarファイル、jarファイルをunzipします。
JDK 1.1では、"last modified time"フィールドには、zipファイルから取り出すかわりに、現在の時刻を設定します。
取り出したファイルに対するファイルのパーミッションは復元されません。
| 属性 | 説明 | 必須 |
| src | 展開するzipファイル。 | Yes |
| dest | 展開したファイルを保存するディレクトリ。 | Yes |
<unzip src="${tomcat_src}/tools-src.zip" dest="${tools.home}" />
tarファイルをuntarします。
取り出したファイルに対するファイルのパーミッションは復元されません。
JDK 1.1では、"last modified time"フィールドには、tarファイルから取り出すかわりに、現在の時刻を設定します。
| 属性 | 説明 | 必須 |
| src | 展開するtarファイル。 | Yes |
| dest | 展開したファイルを保存するディレクトリ。 | Yes |
<gunzip src="tools.tar.gz"/>
<untar src="tools.tar" dest="${tools.home}"/>
WebアプリケーションアーカイブのWEB-INF/lib,
WEB-INF/classes や WEB-INFディレクトリ内に追加されるファイルを特別扱いするように拡張したJarタスクです。
| 属性 | 説明 | 必須 |
| warfile | 作成するWARファイル。 | Yes |
| webxml | 使用する展開識別子 (WEB-INF/web.xml)。 | Yes |
| basedir | ファイルをJARするディレクトリ。 | No |
| compress | データを保存するだけでなく、圧縮する。デフォルトはtrue。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| manifest | 使用するMANIFESTファイル。 | No |
| whenempty | 使用するファイルがマッチしない場合の挙動。 | No |
ネストしたlib要素は、ファイルセットを指定します。
このファイルセットに含まれるすべてのファイルは、WARファイルのWEB-INF/libディレクトリに格納されます。
ネストしたclasses要素は、ファイルセットを指定します。
このファイルセットに含まれるすべてのファイルは、WARファイルのWEB-INF/classesディレクトリに格納されます。
ネストしたwebinfは、ファイルセットを指定します。
このファイルセットに含まれるすべてのファイルは、WARファイルのWEB-INFディレクトリに格納されます。
このファイルセットがweb.xmlという名前のファイルを含む場合には、そのファイルを無視して、警告します。
プロジェクトのベースディレクトリが、次のような構成だと仮定します。
thirdparty/libs/jdbc1.jar thirdparty/libs/jdbc2.jar build/main/com/myco/myapp/Servlet.class src/metadata/myapp.xml src/html/myapp/index.html src/jsp/myapp/front.jsp次に、次のように指定してWARファイル
myapp.warを作成します。
<war warfile="myapp.war" webxml="src/metadata/myapp.xml">
<fileset dir="src/html/myapp" />
<fileset dir="src/jsp/myapp" />
<lib dir="thirdparty/libs">
<exclude name="jdbc1.jar" />
</lib>
<classes dir="build/main" />
</war>
このファイルは、以下のような構成になります。
WEB-INF/web.xml WEB-INF/lib/jdbc2.jar WEB-INF/classes/com/myco/myapp/Servlet.class META-INF/MANIFEST.MF index.html front.jspこれは、AntのデフォルトのMANIFESTファイルを使用します。
WEB-INF/web.xmlの内容は、src/metadata/myapp.xmlと同じです。
ZIPファイルを作成します。
basedir属性は、ZIPを実行するディレクトリを指定します。ファイルのパーミッションは、生成したZIPファイルには格納されないことに注意してください。
ZIPアーカイブのファイルの集合を絞り込むこともできます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを作成して、
ネストした<include>と<exclude>、
<patternset>のように、<fileset>のすべての属性(dirはbasedirになります)をサポートします。
または、ネストしたファイルセットか、ファイルセットへの参照を指定することができます。
この場合には、basedirは省略可能ですが、暗黙のファイルセットはbasedirを指定した場合だけ使用します。
暗黙のファイルセットを混在して使う場合(basedirを設定し、includesや<include>のような付加的な副要素を追加します)は、
少なくともひとつのファイルセットが指定されていれば、
明示的なネストした<fileset>です。
ZIPファイルは、各ファイルセットの中のファイルの相対パスだけを反映します。
whenemptyパラメタは、マッチするファイルがない時にどうするかを制御します。
skip(デフォルト) の場合には、ZIPファイルを作成せずに、警告を出力します。
failの場合には、ZIPファイルを作成せずに、ビルドがエラーで停止します。
create の場合には、ZIP互換の処理ツールに空だと認識されるZIPファイル (明示的に0エントリ) を作成します。
| 属性 | 説明 | 必須 |
| zipfile | 作成するZIPファイル。 | Yes |
| basedir | ファイルをZIPするディレクトリ。 | No |
| compress | データを保存するだけでなく、圧縮する。デフォルトはtrue。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| whenempty | ファイルが何もマッチしない場合の挙動。 | No |
<zip zipfile="${dist}/manual.zip"
basedir="htdocs/manual"
/>
これは、htdocs/manualディレクトリ中のすべてのファイルを、${dist}ディレクトリ内のmanual.zipと呼ぶファイルにZIPアーカイブします。
<zip zipfile="${dist}/manual.zip"
basedir="htdocs/manual"
excludes="mydocs/**, **/todo.html"
/>
これは、htdocs/manualディレクトリ中のすべてのファイルを、${dist}ディレクトリ内のmanual.zipと呼ぶファイルにZIPアーカイブします。
ただし、ディレクトリmydocs内のファイルや、todo.htmlという名前のファイルは除外します。
<zip zipfile="${dist}/manual.zip"
basedir="htdocs/manual"
includes="api/**/*.html"
excludes="**/todo.html"
/>
これは、htdocs/manualディレクトリ中のすべてのファイルを、${dist}ディレクトリ内のmanual.zipと呼ぶファイルにZIPアーカイブします。
ただし、ディレクトリapi以下のHTMLファイルだけはZIPアーカイブしますが、todo.htmlという名前のファイルは除外します。
<zip zipfile="${dist}/manual.zip">
<fileset dir="htdocs/manual"/>
<fileset dir="." includes="ChangeLog.txt"/>
</zip>
これは、htdocs/manualディレクトリ中のすべてのファイルを、${dist}ディレクトリ内のmanual.zipと呼ぶファイルにZIPアーカイブして、カレントディレクトリ中のファイルChangeLog.txtも追加します。
ChangeLog.txtは、htdocs/manual/ChangeLog.txtのように配置するように、ZIPファイルのトップに追加されます。
cabタスクは、Microsoftのcabアーカイブファイルを作成します。 これは、jarやzipタスクと同様に起動されます。 このタスクは、Windows上でしか動作せずに、他のプラットフォーム上では黙って無視されます。 Microsoftのcabarcツールをあなたの実行可能パスの中で利用できるようにしておかねばなりません。
ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを作成して、
ネストした<include>と<exclude>、
<patternset>のように、<fileset>のすべての属性(dirはbasedirになります)をサポートします。
| 属性 | 説明 | 必須 |
| cabfile | 作成するcabファイルの名前。 | Yes |
| basedir | アーカイブするファイルを取得するディレクトリ。 | Yes |
| verbose | cabarcツールからの出力を見たい場合には、"yes"と設定します。 デフォルトは"no"です。 | No |
| compress | ファイルを圧縮しないで保存したい場合は、"no"に設定してください。 デフォルトは、"yes"です。 | No |
| options | cabarcツールに追加するコマンドラインオプションを指定するために使用します。 通常は、必要ありません。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、すべてのファイルを含みます。 | No |
| includesfile | ファイルの名前。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
<cab cabfile="${dist}/manual.cab"
basedir="htdocs/manual"
/>
これは、htdocs/manualディレクトリ内のすべてのファイルを、${dist}ディレクトリのmanual.cabと呼ぶファイルにcabします。
<cab cabfile="${dist}/manual.cab"
basedir="htdocs/manual"
excludes="mydocs/**, **/todo.html"
/>
これは、htdocs/manualディレクトリ内のすべてのファイルを${dist}ディレクトリのmanual.cabと呼ぶファイルにcabします。 ディレクトリmydocs内のファイル、またはtodo.htmlという名前を持つファイルは除外されます。
<cab cabfile="${dist}/manual.cab"
basedir="htdocs/manual"
includes="api/**/*.html"
excludes="**/todo.html"
verbose="yes"
/>
これは、htdocs/manualディレクトリ内のすべてのファイルを${dist}ディレクトリのmanual.cabと呼ぶファイルにcabします。 ディレクトリapiの下のHTMLファイルだけがアーカイブされますが、todo.htmlという名前を持つファイルは除外されます。 cabarcツールからの出力は、ビルドの出力中に表示されます。
ftpタスクは、ファイルの送信、受信、リスト、削除をおこなうことができる基本的なFTPクライアントを実装します。 それぞれのタスクをどのように実行するかについての解説と例については、以下を参照してください。
ftpタスクは、リモートサーバがどのようなファイルシステムの文法を要求するかについて何も決定しようとしませんが、デフォルトはUnixの標準です。 remotedirは、ftpサーバが要求する文法で正確に指定しなければいけません。 separatorは、代わりに使用しなければならないファイルの区切りを設定するために使用することができます。
ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
| 属性 | 説明 | 必須 |
| server | リモートのftpサーバのアドレス。 | Yes |
| port | リモートのftpサーバのポート番号。 デフォルトは、ポート21。 | No |
| userid | ftpサーバで使用するログインID。 | Yes |
| password | ftpサーバで使用するloginパスワード。 | Yes |
| remotedir | ftpサーバのファイルをアップロードするディレクトリ。 | No |
| action | 実行するftpのアクション。 デフォルトは、"send"です。 現在、"put"、"get"、"del"と"list"がサポートされています。 | No |
| binary | バイナリモード転送("yes")か、テキストモード転送モード転送("no")を選択します。 デフォルトは、"yes"です。 | No |
| verbose | "yes"に設定した場合は、それぞれのファイルの転送についての情報を表示します。 デフォルトは"no"です。 | No |
| depends | "yes"に設定した場合は、新しいまたは変更されたファイルだけを転送します。 デフォルトは"no"です。 | No |
| newer | dependsの別名. | No |
| separator | ftpサーバで使用されるファイル区切りを設定します。 デフォルトや"/"です。 | No |
| listing | "list"アクションの結果を書くファイルです。 "list"アクションに必要ですが、他では無視されます。 | No |
ファイルを送信する方法を記述するためのもっとも簡単な方法は、次のいくつかの例を見ることです。
<ftp server="ftp.apache.org"
userid="anonymous"
password="me@myorg.com">
<fileset dir="htdocs/manual" />
</ftp>
これは、anonymousとしてftp.apache.orgにログインして、htdocs/manualディレクトリ内のすべてのファイルをそのユーザのデフォルトディレクトリにアップロードします。
<ftp server="ftp.apache.org"
remotedir="incoming"
userid="anonymous"
password="me@myorg.com"
depends="yes"
>
<fileset dir="htdocs/manual" />
</ftp>
これは、anonymousとしてftp.apache.orgにログインして、anonymousのデフォルトディレクトリのincomingディレクトリのhtdocs/manualディレクトリ内のすべての新規または変更ファイルをアップロードします。
<ftp server="ftp.apache.org"
port="2121"
remotedir="/pub/incoming"
userid="coder"
password="java1"
depends="yes"
binary="no"
>
<fileset dir="htdocs/manual">
<include name="**/*.html" />
</fileset>
</ftp>
これは、パスワードjava1のcoderとして、ftp.apache.orgのポート2121にログインして、/pub/incomingディレクトリのhtdocs/manual内にあるすべての新規または変更HTMLファイルをアップロードします。
そのファイルは、テキストモードで転送されます。
<ftp server="ftp.nt.org"
remotedir="c:\uploads"
userid="coder"
password="java1"
separator="\"
verbose="yes"
>
<fileset dir="htdocs/manual">
<include name="**/*.html" />
</fileset>
</ftp>
これはWindowsベースのftp.nt.orgに、パスワードjava1のcoderとしてログインし、c:\uploadsディレクトリのhtdocs/manualディレクトリ内のすべてのHTMLファイルをアップロードします。
各ファイルをアップロードする時に、進行状況のメッセージを表示します。
FTPサーバからファイルの受信は、ファイルの送信と非常に似た方法で動作します。 唯一の違いは、ネストしたファイルセットが、FTPサーバ上のファイルのベースディレクトリとしてremotedir属性を、ファイルを保存するローカルディレクトリとしてdir属性を使用することです。 FTPサイトのファイルの構造は、ローカルマシン上に保存されます。
<ftp action="get"
server="ftp.apache.org"
userid="anonymous"
password="me@myorg.com">
<fileset dir="htdocs/manual" >
<include name="**/*.html" />
</fileset>
</ftp>
これは、ftp.apache.orgにanonymousとしてログインし、そのユーザのデフォルトディレクトリからすべての.htmlファイルをローカルマシン上のhtdocs/manualディレクトリに再帰的にダウンロードします。
<ftp action="del"
server="ftp.apache.org"
userid="anonymous"
password="me@myorg.com" >
<fileset>
<include name="**/*.tmp" />
</fileset>
</ftp>
これは、anonymousとしてftp.apache.orgにログインし、
そのユーザのデフォルトのディレクトリからすべての*.tmpファイルを削除しようとします。
ファイルを削除するパーミッションを持っていない場合は、BuildExceptionが投げられます。
<ftp action="list"
server="ftp.apache.org"
userid=quot;anonymous"
password="me@myorg.com"
listing="data/ftp.listing" >
<fileset>
<include name="**" />
</fileset>
</ftp>
これは、
FTPサーバ上のanonymousユーザのデフォルトディレクトリに対して、
data/ftp.listing内のすべてのファイルのリストのファイルを作成します。
リストは、FTPサーバが通常ファイルをリストするフォーマットでおこなわれます。
(Antを)実行中のVM内で、NetRexxのソースツリーをコンパイルします。
コンパイル元とコンパイル先のディレクトリは、NetRexxのソースファイルをコンパイルするために再帰的に走査されます。 対応するクラスファイルを持たない、またはそのクラスファイルがJavaファイルよりも古いNetRexxファイルだけがコンパイルされます。
ソースツリー内のファイルは、クラスパス内にサポートファイルが適切に配置されているかを確認しながら、コンパイル先のディレクトリにコピーされます。 NetRexxコンパイラはパラメタで指定したディレクトリにクラスファイルを生成できないので、ソースファイルをコピーします。
ソースツリーのディレクトリ構造は、パッケージ階層に従わねばなりません。
コンパイル/コピーするファイルの集合を絞り込むこともできます。 これにはincludesとincludesfile、excludes、excludesfile、defaultexcludes属性を使用します。 includesやincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeやexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを作成して、
ネストした<include>と<exclude>、
<patternset>のように、<fileset>のすべての属性(dirはsrcdirになります)をサポートします。
| 属性 | 説明 | 必須 |
| binary | リテラルがNetRexxの型ではなく、Javaのバイナリ型として処理されるかどうか。 | No |
| classpath | コンパイル中に使用するクラスパス。 | No |
| comments | 生成されるJavaのソースにコメントを渡すかどうか。 | No |
| compact | エラーメッセージをcompactとverboseフォーマットのどちらで出力するか。 | No |
| compile | NetRexxコンパイラが生成されたJavaコードをコンパイルしなければならないかどうか。 | No |
| console | 'console'上にメッセージを表示するかどうか。 | No |
| crossref | Whether variable cross references are generated | No |
| decimal | NetRexxコードに、10進数計算を使用しなければならないかどうか。 | No |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| destDir | NetRexxソースファイルをコピーしてからコンパイルするコンパイル先ディレクトリ。 | Yes |
| diag | コンパイルについての診断情報を生成するかどうか。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| explicit | 変数を使用する前に明示的に宣言するかどうか。 | No |
| format | 生成したJavaコードをうまくフォーマットするか、またはコールスタックのデバッグのためにNetRexxの行番号に一致するように残すかどうか。 | No |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| java | Javaコードを生成するかどうか。 | No |
| keep | 生成されたJavaソースコードをコンパイル後に残すかどうかを設定します。 生成されたファイルは、.javaではなく.java.keepという拡張子を持っています。 | No |
| logo | コンパイル中にコンパイラのテキストロゴを表示するかどうか。 | No |
| replace | コンパイル中に生成された.javaファイルを置換するかどうか。 | No |
| savelog | コンパイラのメッセージをコンソールだけでなくNetRexxC.logに書き込むかどうか。 | No |
| sourcedir | NetRexxコンパイラにソースファイルと同じディレクトリにクラスファイルを保存するように指定します。 他の選択肢は作業用ディレクトリです。 | No |
| srcDir | NetRexxのソースファイルを見つけるためのソースディレクトリを設定します。 | Yes |
| strictargs | NetRexxコンパイラに、引数が必要ない時でさえも、メソッド呼び出しに常に括弧が必要かどうかを指定します。
たとえば、aStringVar.getBytesとaStringVar.getBytes()です。 |
No |
| strictassign | NetRexxコンパイラに、代入の型が厳密に一致しなければならないかを指定します。 | No |
| strictcase | NetRexxコンパイラが大文字・小文字を区別するかどうかを指定します。 | No |
| strictimport | import宣言を使用して明示的にクラスをインポートしなければならないかどうか。
デフォルトでは、NetRexxコンパイラはある程度のパッケージは自動的にインポートします。 |
No |
| strictprops | ローカルプロパティを、thisを用いて明示的に宣言する必要があるかどうか。 |
No |
| strictsignal | コンパイラが明示的に銘々された型で例外をキャッチしなければならないかどうか。 | No |
| symbols | デバッグ用シンボルをクラスファイルに生成しなければならないかどうか。 | No |
| time | NetRexxコンパイラに、コンソールにコンパイル時間を出力するかどうかを指定します。 | No |
| trace | トレースとその結果として生じるトレース出力ををonまたはoffする。 | No |
| utf8 | NetRexxコンパイラにソースファイルがUTF-8であることを指定しる。 | No |
| verbose | 多くの警告やエラーメッセージを出力するかどうか。 | Yes |
<netrexxc srcDir="/source/project" includes="vnr/util/*" destDir="/source/project/build" classpath="/source/project2/proj.jar" comments="true" crossref="false" replace="true" keep="true" />
srcDirディレクトリ内のfromExtension文字列で終了するファイルの名前を、toExtension文字列で終了するように変更します。
replaceがtrueの場合は、ファイルが置換されるだけです。
ファイルの包含/排他の処理方法や、パターンを記述する方法については、
ディレクトリベースのタスクの節を参照してください。
このタスクは、暗黙のファイルセットを作成して、
ネストした<include>と<exclude>、
<patternset>のように、<fileset>のすべての属性(dirはsrcDirになります)をサポートします。
| 属性 | 説明 | 必須 |
| defaultexcludes | デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 | No |
| excludes | 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 | No |
| excludesfile | ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 | No |
| fromExtention | ファイル名を変更したいファイルの末尾の文字列。The string that files must end in to be renamed | Yes |
| includes | 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 | No |
| includesfile | ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 | No |
| replace | 名前を変更するファイルがすでに存在する場合に、それを置き換えるかどうかを指定します。 | No |
| srcDir | ファイルの検索を開始するディレクトリ。 | Yes |
| toExtension | 名前を変更した後のファイルの末尾の文字列。 | Yes |
<renameext srcDir="/source/project1" includes="**" excludes="**/samples/*" fromExtension=".java.keep" toExtension=".java" replace="true" />
BSFをサポートした言語で、スクリプトを実行します。
実行中のプロジェクトのすべての項目(タスク、ターゲットなど)は、スクリプトから、そのnameまたはidを使用してアクセスすることができます。
スクリプトは、Javaで記述されたタスクができるほとんどすべてのことができます。
| 属性 | 説明 | 必須 |
| language | スクリプトを記述するプログラミング言語。 BSF言語をサポートしていなければいけません。 | No |
| src | スクリプトをインラインでなく、ファイルに記述する時の場所。 | No |
<project name="squares" default="main" basedir=".">
<target name="setup">
<script language="javascript"> <![CDATA[
for (i=1; i<=10; i++) {
echo = squares.createTask("echo");
main.addTask(echo);
echo.setMessage(i*i);
}
]]> </script>
</target>
<target name="main" depends="setup" />
</project>
これは、次のように出力します。
setup: main: 1 4 9 16 25 36 49 64 81 100 BUILD SUCCESSFUL
idによる参照と、二つの異なるスクリプト言語を用いた別の例を次に示します。
<project name="testscript" default="main">
<target name="sub">
<echo id="theEcho" />
</target>
<target name="sub1">
<script language="netrexx"><![CDATA[
theEcho.setMessage("In sub1")
sub.execute
]]></script>
</target>
<target name="sub2">
<script language="javascript"><![CDATA[
theEcho.setMessage("In sub2");
sub.execute();
]]></script>
</target>
<target name="main" depends="sub1,sub2" />
</project>
これは、次のように出力します。
sub1: In sub1 sub2: In sub2 main: BUILD SUCCESSFUL
version、dateとlabelから2つ以上の属性を指定した場合には、version、date、labelの順に一つだけを使用します。
| 属性 | 値 | 必須 |
|---|---|---|
| login | ユーザ名、パスワード | No |
| vsspath | SourceSafeのパス | Yes |
| localpath | 作業用ディレクトリを上書きして、指定されたパスに設定します。 | No |
| writable | trueまたはfalse。 | No |
| recursive | trueまたはfalse。 | No |
| version | 取得するバージョン番号。 | No |
| date | 取得するタイムスタンプ。 | No |
| label | 取得するラベル。 | No |
| ssdir | ss.exeが存在するディレクトリ。
デフォルトでは、このタスクはPATH中に存在すると推測します。 |
No |
version、dateまたはlabelのどれか一つを指定することに注意してください。
<vssget localPath="C:\mysrc\myproject"
recursive="true"
label="Release1"
login="me,mypassword"
vsspath="/source/aProject"
writable="true"/>
ユーザ名meとパスワードmypasswordを使用してVSSプロジェクト$/source/aprojectから取得します。 Release1とラベル付けされたファイルを再帰的に取得し、ローカルディレクトリC:\mysrc\myprojectにそれらを書き込みます。 ローカルのファイルは書き込み可能です。
ビルドイベントを使用するために、AntのProjectオブジェクトを作成する必要があります。
あなたのリスナをそのプロジェクトに追加するために、addBuildListenerメソッドを呼び出すことができます。
あなたのリスナは、org.apache.tools.antBuildListenerインタフェースを実装しなければいけません。
そのリスナは、以下のようなイベントを示すBuildEventsを受け取るでしょう。
は、ビルドの進行状況のXML表現を生成するリスナを使用してAntを実行します。 このリスナは、標準出力にログを生成するデフォルトのリスナと同様に、Antに含まれています。ant -listener org.apache.tools.ant.XmlLogger
あなた独自のタスクを記述することは、以下に示すように非常に簡単です。
org.apache.tools.ant.Taskを拡張してJavaクラスを作成します。public voidメソッドでなくてはいけません。
メソッドの名前は、"set"で始まり、その後に最初の一文字を大文字に、残りを小文字にした属性名が来なくてはいけません。
属性の型はStringや、任意のプリミティブ型(それらはビルドファイル中の文字列表現から変換されます。
booleanを指定した場合には、ビルドファイル中で指定された値が"true"や"yes"、"on"のどれかであれば、メソッドにtrueが渡されます)、
クラス、ファイル
(属性の値をプロジェクトのbasedirに対して相対的に解釈します)、他の任意のひとつのString引数のコンストラクタを持つ型です。public void
addText(String)メソッドを記述します。publicメソッドでなければいけません。
createメソッドの名前は、"create"で始まり、その後に要素名が来なくてはいけません。BuildExceptionを投げるpublic void executeを記述します。
このメソッドは、タスク自身を実装します。projectとlocation変数によって、そのプロジェクトに対する参照とビルドファイル内の位置を取得します。target変数によって、それが属しているターゲットへの参照を取得します。init()を呼び出します。createXXX()メソッドでこのタスクのXML要素のすべての子要素を作成するか、
addXXX()メソッドでインスタンス化してからこのタスクに追加します。setXXXメソッドによって設定します。addTextメソッドによってタスクに追加します。setXXXメソッドによって設定します。execute()を呼び出します。System.outストリームにメッセージを出力する自分自身のタスクを記述してみましょう。 このタスクは、"message"という一つの属性を持ちます。
package com.mydomain;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
public class MyVeryOwnTask extends Task {
private String msg;
// The method executing the task
public void execute() throws BuildException {
System.out.println(msg);
}
// The setter for the "message" attribute
public void setMessage(String msg) {
this.msg = msg;
}
}
実際にこれは非常に簡単です;-)
あなたのタスクをシステムに追加することも、以下に示すように簡単です。
<?xml version="1.0"?>
<project name="OwnTaskExample" default="main" basedir=".">
<taskdef name="mytask" classname="com.mydomain.MyVeryOwnTask"/>
<target name="main">
<mytask message="Hello World! MyVeryOwnTask works!" />
</target>
</project>
タスクを(より永続的に)追加する別の方法は、タスク名と実装したクラス名をorg.apache.tools.ant.taskdefsパッケージ内のdefault.propertiesファイルに追加することです。
その後は、タスクが組み込みであるかのように使用することができます。
AntのオンラインFAQは、jakarta.apache.orgにあります. このFAQは、質問と質問に対する解答がオンラインで実行されるという意味で対話的です。
頻繁に出てくる質問の一つが、"ビルドファイルのDTDは存在しますか?"です。 この解答はFAQを参照してください。
このソフトウェアにフィードバックするためには、Antユーザのメーリングリスト (ant-user-subscribe@jakarta.apache.org)に登録してください。
Antに貢献したいとか、最新の開発状況を知りたい場合には、 Ant開発メーリングリスト(ant-dev-subscribe@jakarta.apache.org)に参加してください。
両方のメーリングリストのアーカイブは、http://archive.covalent.net/で見つけることができます. これに関しては、Covalent Technologiesに非常に感謝します。
Copyright © 2000 Apache Software Foundation. All rights Reserved.