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のビルド

ディレクトリ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のインストール

Antのバイナリ配布は、bindocslibの3つのディレクトリから構成されています。 binlibディレクトリだけは、Antを実行するために不可欠です。 Antを実行するためには、以下のように実行しなければいけません。

Windows

Antをc:\ant\にインストールしたと仮定します。 以下のように環境を設定してください。

set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.2.2
set PATH=%PATH%;%ANT_HOME%\bin

Unix (bash)

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と入力するだけです。

何も指定しなければ、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を自分自身の方法でインストールした時には、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"/>

ifunless属性が存在しない場合には、ターゲットは常に実行されます。

すべての他のターゲットが依存している、いわゆる初期化ターゲットの中に あなたの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類似構造

":"と";"を区切り文字として使用した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や、FileSetPATH類似構造に対してネストした要素を使用するすべてのタスクは、これらの構造に対してリファレンスを受け付けます。


ディレクトリベースのタスク

ある種のタスクは、実行するタスクのためにディレクトリツリーを使用します。 たとえば、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/Entries
org/apache/jakarta/tools/ant/CVS/Entries

しかし、以下のファイルにはマッチしません。

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/jakarta/test.xml

しかし、以下のファイルにはマッチしません。

org/apache/xyz.java ('jakarta'/' part is missing)

org/apache/**/CVS/* org/apacheの下任意のディレクトリにあるCVSディレクトリ内のすべてのファイルにマッチします。

以下のファイルにマッチします。

org/apache/CVS/Entries
org/apache/jakarta/tools/ant/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

説明

与えられたビルドファイルで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>

AntCall

説明

同じビルドファイルの別のターゲットを呼び出します。 同じプロパティ(このコンテキスト内のparamのプロパティ)を指定するかどうかは選択可能です。

パラメタ

属性 説明 必須
target 実行するターゲット。 Yes

ネストした要素として指定されるパラメタ

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は不完全だということに注意して、常に<taskdef>を使用したXMLエントリを追加してください。 この問題を回避する方法は、ここを参照してください。

このタスクは、必要な属性については知らないので、すべて#IMPLIEDとしてリストします。

パラメタ

属性 説明 必須
output DTDを書き込むファイル。 Yes

<antstructure output="project.dtd" />

Available

説明

リソースがランタイムで利用できる場合に、プロパティを設定します。 このリソースは、ファイルリソースや、クラスパス中のクラス、JVMのシステムリソースなどです。

リソースが存在する場合は、デフォルトではプロパティの値はtrueに設定されますが、そうでなければプロパティは設定されません。 value属性を使用すれば、何か特別な値に設定できます。

通常では、このタスクはシステムパラメタに依存したtarget実行を回避するのに便利なプロパティを設定するために使用します。

パラメタ

属性 説明 必須
property 設定するプロパティの名前。 Yes
value プロパティに設定する値。 デフォルトは"true"。 No
classname クラスパス内を検索するクラス。 Yes
resource JVM内を検索するリソース。
file 検索するファイル。
classpath classnameを検索する時に使用するクラスパス。 No

ネストした要素として指定されるパラメタ

classpath

Availableclasspath属性は、PATH類似構造であり、ネストしたclasspath要素としても設定できます。

  <available classname="org.whatever.Myclass" property="Myclass.present" />

Antのクラスパス中にorg.whatever.Myclassが見つかった場合に、 プロパティMyclass.presentを値"true"に設定します。


Chmod

説明

指定したディレクトリ内の単一、またはすべてのファイルのパーミッションを変更します。 現在は、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 filedirbothの中の一つです。 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を持つファイルセットに属するすべてのファイルを同じパーミッションにします。


Copy

説明

一つのファイルまたはファイルセットを、新しいファイルまたはディレクトリにコピーします。 ファイルは、元のファイルがコピー先のファイルより新しい場合か、コピー先にファイルが存在しない時にだけコピーされます。 しかし、overwrite属性でファイルをオーバーライトするように明示的に指定することもできます。

ファイルセットを、コピーするファイルを選択するために使用します。 ファイルセットを使用するためには、todir属性を設定しなければいけません。

パラメタ

属性 説明 必須
file コピーするファイル。 fileか、少なくとも一つのネストしたfileset要素のどちらか一つ。
tofile コピー先のファイル。 file属性には、tofiletodirのどちらかを使用できます。 ネストしたファイルセットには、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>

Copydir

Deprecated

このタスクは推奨されません。 代わりにCopyタスクを使用してください。

説明

コピー元からコピー先にディレクトリ構造をコピーします。

コピーするファイルの集合を絞り込むこともできます。 これにはincludesincludesfileexcludesexcludesfiledefaultexcludes属性を使用します。 includesincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。

このタスクは、暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>のように、<fileset>のすべての属性(dirsrcになります)をサポートします。

パラメタ

属性 説明 必須
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ファイルをコピーします。


Copyfile

Deprecated

このタスクは推奨されません。 代わりに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

説明

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}"にチェックアウトしてあるパッケージ/モジュールを更新します。


Delete

説明

単独のファイルや、指定されたディレクトリとそのサブディレクトリに含まれるすべてのファイル、または一つ以上の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"を持つすべてのファイルを削除します。


Deltree

Deprecated

このタスクは推奨されません。 代わりにDeleteタスクを使用してください。

説明

ディレクトリを、その中のすべてのファイルとサブディレクトリと一緒に削除します。

パラメタ

属性 説明 必須
dir 削除するディレクトリ。 Yes

  <deltree dir="dist" />

これは、ディレクトリdistを、その中のファイルとサブディレクトリを含めて削除します。

  <deltree dir="${dist}" />

これは、ディレクトリ${dist}を、その中のファイルとサブディレクトリを含めて削除します。


Echo

説明

メッセージを、System.outかファイルに出力します。

パラメタ

属性 説明 必須
message 出力するメッセージ。 Yes。ただし、この要素内のデータが文字の節で述べた文字でなければ。
file メッセージを書き込むファイル。 No
append すでに存在するファイルに追加するかどうか? No - デフォルトはfalseです。

  <echo message="Hello world" />
  
<echo>
This is a longer message stretching over
two lines.
</echo>

Exec

説明

システムコマンドを実行します。 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

コマンドライン引数は、ネストした<arg>要素として指定します。 コマンドライン引数を参照してください。

env

ネストした<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で起ります。


ExecOn

説明

システムコマンドを実行します。 os属性を指定した時には、指定されたオペレーティングシステムのどれかの上で実行されている時にだけ、そのコマンドを実行します。

ファイルセットの数のファイルと/またはディレクトリを、システムコマンドに引数として渡します。 少なくとも、一つのネストした<fileset>が必要です。

パラメタ

属性 説明 必須
executable コマンドライン引数を伴わない実行するコマンド。 Yes
dir コマンドを実行するディレクトリ。 No
os コマンドを実行するかもしれないオペレーティングシステムのリスト。 No
output コマンドの出力をリダイレクトするファイル。 No
timeout 指定された時間内にコマンドが終了しない場合に、それを停止します(ミリ秒で指定します)。 No
failonerror コマンドが0以外のリターンコードで終了した場合に、ビルドプロセスを停止するかどうか。 No
parallel コマンドを一回だけ実行して、すべてのファイルを引数として付加します。 デフォルトはtrueです。 falseの場合には、コマンドを各ファイルごとに一回実行します。 No
type filedirbothの中の一つです。 fileを設定した場合には、プレーンファイルの名前だけをコマンドに送ります。 dirを設定した場合には、ディレクトリの名前だけを考慮します。 No, デフォルトはfile

ネストした要素として指定されるパラメタ

fileset

このタスクに対してファイルを定義するために、 任意の数のネストした<fileset>要素と どこかで定義されている<fileset>を使用することができます。

arg

arg

コマンドライン引数は、ネストした<arg>要素として指定します。 コマンドライン引数を参照してください。

env

ネストした<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を実行します。


Fail

説明

現在のビルドを終了します(BuildExceptionを投げるだけです)が、付加情報を出力するように選択できます。

パラメタ

属性 説明 必須
message ビルドが終了した理由についての詳しい情報を知らせるメッセージ。 No

  <fail/>

これは、現在のビルドを終了しますが、何も情報を知らせません。

BUILD FAILED

build.xml:4: No message

  <fail message="Something wrong here."/>

これは現在のビルドを終了し、次のようなメッセージを出力します。

BUILD FAILED

build.xml:4: Something wrong here.


Filter

説明

このプロジェクトにトークンフィルタを設定したり、入力ファイルから複数のトークンフィルタを読み込んでフィルタとして設定します。 プロジェクトの共通のメソッドを使ってファイルのコピー操作を実行するすべてのタスクが、トークンフィルタを使用します。

注意 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ファイルからすべてのプロパティエントリを読み込んで、フィルタとして設定します。

FixCRLF

説明

テキストファイルをローカルに一致させます。

修正するファイルの集合を絞り込むこともできます。 これにはincludesincludesfileexcludesexcludesfiledefaultexcludes属性を使用します。 includesincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。

このタスクは、暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>要素のように、<fileset>のすべての属性(dirsrcdirになります)をサポートします。

パラメタ

属性 説明 必須
srcDir 修正するファイルを探す場所。 Yes
destDir 修正したファイルを保存する場所。 デフォルトはsrcDirです(オリジナルファイルを置換します)。 No
includes 包含しなければならないファイルのパターンのカンマで区切られたリスト。 省略した時には、すべてのファイルを含みます。 No
includesfile ファイル名。 このファイルの各行は、包含パターンとして解釈されます。 No
excludes 除外しなければならないファイルのパターンのカンマで区切られたリスト。 省略された時には、(デフォルト除外集合を除けば)除外されるファイルはありません。 No
excludesfile ファイル名。 このファイルの各行は、除外パターンとして解釈されます。 No
defaultexcludes デフォルト除外集合を使用するかどうか("yes"/"no")を指定します。 省略した時には、デフォルト除外集合を使用します。 No
cr キャリッジリターン (CR) 文字をどのように処理するかを指定します。 このプロパティの有効な値は、次のとおりです。
  • add: 各LFの直前にCRがあることを保証します。
  • asis: CR文字だけを残します。
  • remove: すべてのCR文字を削除します。
デフォルトは、あなたがこのタスクを実行するプラットフォームに依存します。 Unixプラットフォームでは、デフォルトはremoveです。 DOSベースのシステム (Windowsを含みます)では、デフォルトはaddです。

注意: このプロパティに"asis"を指定しない限り、LFの直前でない余分なCR文字は削除されます。

No
tab タブ文字をどのように処理するかを指定します。 このプロパティの有効な値は、次の通りです。
  • add: タブストップを展開した連続したスペースをタブに変換します。
  • asis: タブとスペース文字をそのままにします。
  • remove: タブをスペースに変換します。
このパラメタのデフォルトは、"asis"です。

注意: このプロパティに"asis"を指定しない限り、行末の空白以外の文字の後の余分なスペースやタブは、削除されます。

No
tablength TABストップの文字数。 2の正の累乗でなければいけません。 このパラメタのデフォルトは8です。 No
eof DOSのファイル終端文字 (control-Z) をどのように処理するかを指定します。 このプロパティの有効な値は、次の通りです。
  • add: ファイルの最後にEOF文字があることを保証します。
  • asis: EOF文字をそのままにします。
  • remove: ファイルの最後にEOF文字がある場合には、削除します。
デフォルトは、このタスクを実行するプラットフォームに依存します。 Unixプラットフォームでは、デフォルトはremoveです。 DOSベースのプラットフォーム (Windowsを含みます)では、デフォルトはasisです。
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をどのエディタを使って見るかを知る必要がなくなります。


GenKey

説明

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>

Get

説明

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オプションを使用します。


GUnzip

説明

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

説明

ファイルをgzipします。

パラメタ

属性 説明 必須
src gzipするファイル。 Yes
zipfile 作成するファイル。 Yes

<gzip src="test.tar" zipfile="test.tar.gz" />


Jar

説明

Jarはファイルの集合です。

basedir属性は、jarを実行するディレクトリを指定します。

ファイルのパーミッションは、生成したjarファイルには格納されないことに注意してください。

jarアーカイブのファイルの集合を絞り込むこともできます。 これにはincludesincludesfileexcludesexcludesfiledefaultexcludes属性を使用します。 includesincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。

このタスクは、暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>のように、<fileset>のすべての属性(dirbasedirになります)をサポートします。

より融通が聞くように、ネストしたファイルセットを使用して、一つの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では同じパッケージ内だと考えられます)に格納されます。


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

ネストした要素として指定されるパラメタ

argとjvmarg

クラスやフォークしたVMに引数を指定するために、ネストした<arg><jvmarg>要素を使用します。 コマンドライン引数を参照してください。

sysproperty

クラスに必要なシステムプロパティを指定するためにネストした<sysproperty>要素を使用します。 これらのプロパティは、クラスの実行中のVM(Antを実行しているVMか、フォークしたVMのどちらか)に対して利用可能になります。 この要素に対する属性は、環境変数と同じです。

classpath

Javaclasspath属性は、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>

Javac

説明

(Antの)VMを実行しているソースツリーをコンパイルします。

Javaソースファイルをコンパイルするために、コンパイル元とコンパイル先のディレクトリを再帰的に走査します。 Javaファイルは、対応するクラスファイルがないか、クラスファイルがJavaファイルよりも古い場合にのみ、コンパイルされます。

ソースツリーのディレクトリ構造は、パッケージ階層に従っていなければいけません。

コンパイル/コピーされるファイルの集合を絞り込むことができます。 これにはincludesincludesfileexcludesexcludesfiledefaultexcludes属性を使用することができます。 includesincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、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>の属性(dirsrcdirになります)のすべてをサポートしています。

srcとclasspath、bootclasspath、extdirs

Javacsrcdirclasspathbootclasspathextdirs属性は、href="#path">PATH類似構造であり、それぞれネストしたsrcclasspathbootclasspathextdirs要素によって設定することができます。

  <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/p1mypackage/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/Javadoc2

説明

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

ネストした要素として指定されるパラメタ

link

javadoc出力に対して、指定したURLでリンクします。 これは、linkとlinkoffline属性と同じ役目を果たします。 どちらかの (または、同時に両方の) 記法を使用できますが、 ネストした要素の方が、簡単に複数の引数を指定することができます。

パラメタ

属性 説明 必須
href リンクしたい外部のドキュメントのURL。 Yes
offline ドキュメント生成時に、このリンクがオンラインで利用できない場合にtrueを指定します。 No
packagelistLoc 外部のドキュメントのパッケージリストファイルを含むディレクトリの場所。 オフライン属性がtrueの場合のみ。

groups

概要ページのそれぞれのパッケージを、あなたが指定したグループに、一グループが一つのテーブルになるように分割します。 これは、group属性と同じ役目を果たします。 どちらかの記法(または同時に両方)を使用することができますが、ネストした要素の方が複数の引数を簡単に指定することができます。

属性 説明 必須
title このグループの題名。 Yes
packages このグループに含まれるパッケージのリスト。 Yes

doclet

ネストした要素の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>

sourcepath, classpathとbootclasspath

Javadocsourcepath, classpathbootclasspath属性は、PATH類似構造であり、それぞれネストしたsourcepath, classpathbootclasspath要素で設定することができます。

  <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 &#169; 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>

Mail

説明

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に送信します。


Mkdir

説明

ディレクトリを作成します。 必要な場合には、存在しない親ディレクトリも作成します。

パラメタ

属性 説明 必須
dir 作成するディレクトリ。 Yes

<mkdir dir="${dist}" />

これは、ディレクトリ${dist}を作成します。

<mkdir dir="${dist}/lib" />

これは、ディレクトリ${dist}/libを作成します。


Move

説明

ファイルを新しいファイルやディレクトリに移動したり、ファイルの集合を新しいディレクトリに移動します。 デフォルトでは、移動先のファイルがすでに存在する場合には、オーバーライトします。 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>

Patch

説明

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/を削除します。

Property

説明

プロジェクトのプロパティ (名前と値で) や、プロパティの集合 (ファイルやリソースから)を設定します。

ユーザがプロパティを設定したり、親プロジェクト内でプロパティを設定した時(このプロジェクトは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上のホームディレクトリに他の値を使用するかもしれません。


Rename

Deprecated

このタスクは推奨されません。 代わりに、Moveタスクを使用してください。

説明

与えられたファイルの名前を変更します。

パラメタ

属性 説明 必須
src 名前を変更するファイル。 Yes
dest ファイルの新しい名前。 Yes
replace 既存ファイルの置換を有効にする (デフォルト: on)。 No

  <rename src="foo.jar" dest="${name}-${version}.jar" />

ファイルfoo.jar${name}-${version}.jarに名前を変更します(nameversion既定義のプロパティだと仮定しています)。 ${name}-${version}.jarという名前のファイルがすでに存在している場合には、foo.jarに名前を変更する前にそれを削除します。


Replace

説明

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コンパイラを実行します。

rmicは、(classname属性で指定した)ある一つのクラス、または一度に多くのクラス(ベース以下に存在する_Stubクラスと_Skelクラス以外のすべてのクラス)にたいして実行することができます。

rmicで処理するファイルの集合を絞り込むことができます。 これにはincludesincludesfileexcludesexcludesfiledefaultexcludes属性を使用することができます。 includesincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、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

ネストした要素として指定されるパラメタ

classpath

rmicclasspath属性は、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に保存されます。


SignJar

説明

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に署名します。


Style

説明

XSLTを用いてドキュメントの集合を処理します。

これは、XMLベースのドキュメントを表示したり、コードを生成する場合に便利です。

コピーするファイルの集合を絞り込むこともできます。 これにはincludesincludesfileexcludesexcludesfiledefaultexcludes属性を使用します。 includesincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。

このタスクは、暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>のように、<fileset>のすべての属性(dirbasedirになります)をサポートします。

パラメタ

属性 説明 必須
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

説明

tarアーカイブを作成します。

basedir属性は、tarを実行するディレクトリです。

tarアーカイブのファイルの集合を絞り込むことができます。 これにはincludesincludesfileexcludesexcludesfiledefaultexcludes属性を使用します。 includesincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。

このタスクは、暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>のように、<fileset>のすべての属性(dirbasedirになります)をサポートします。

このタスクは圧縮はおこなわないことに注意してください。 .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という名前のファイルは除外されます。


Taskdef

説明

タスクの定義を現在のプロジェクトに追加し、それによってこの新しいタスクが現在のプロジェクトで使用できるようになります。 このタスクを一意に同定できる名前と、このタスクを実装しているクラスの(パッケージまで含めた)フルの名前の2つの属性が必要です。

Taskdefは、システムにあなた独自のタスクを追加するために使用します。 "独自タスクの記述"を参照してください。

パラメタ

属性 説明 必須
name タスクの名前。 Yes
classname タスクを実装したフルのクラス名。 Yes
classpath classnameを検索する時に使用するクラスパス。 No

ネストした要素として指定されるパラメタ

classpath

Taskdefclasspath属性は、PATH類似構造であり、ネストしたclasspathによっても設定することができます。

  <taskdef name="myjavadoc" classname="com.mydomain.JavadocTask" />

これは、Antでmyjavadocと呼ぶタスクを利用可能にします。 クラスcom.mydomain.JavadocTaskが、このタスクを実装しています。


Touch

説明

ファイルの更新時刻を変更し、できるかぎり同じ時間にします。

JDK 1.1では、現在作業をしている更新時刻を持つ新しいファイルの作成だけで、他の場合は警告を出します。

パラメタ

属性 説明 必須
file ファイルの名前。 Yes
millis 新しいファイルの更新時刻を1970年1月1日の夜中からの経過ミリ秒で指定します。 No
datetime MM/DD/YYYY HH:MM AM_or_PMというフォーマットでファイルの更新時刻を指定します。 No

millisdatetimeが省略された場合には、現在の時刻だと仮定します。

  <touch file="myfile" />

これは、myfileが存在しない場合には作成し、その更新時刻を現在の時刻に変更します。

  <touch file="myfile" datetime="06/28/2000 2:02 pm" />

これは、myfileが存在しない場合には作成し、その更新時刻を2000年6月28日午後2時2分 (24時間で表すと14時2分)に変更します。


Tstamp

説明

現在のプロジェクトで、DSTAMPとTSTAMP、TODAYプロパティを設定します。 DSTAMPは"yyyymmdd"フォーマットで、TSTAMPは"hhmm"フォーマット、TODAYは"month day year"フォーマットです。

これらのプロパティは、ビルドファイル内で使用できます。 たとえば、タイムスタンプの付いたファイル名を作成したり、ドキュメント中の指示したリリース日のようなplaceholderタグを置換するために使われます。 このタスクの一番良い場所は、初期化ターゲット中です。

パラメタ

属性 説明 必須

  <tstamp/>

Uptodate

説明

ターゲットファイルが、ソースファイルの集合よりも新しい場合に、プロパティを設定します。 ソースファイルは、ネストした<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.


Unjar/Unwar/Unzip

説明

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}" />


Untar

説明

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}"/>


War

説明

WebアプリケーションアーカイブのWEB-INF/lib, WEB-INF/classesWEB-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

ネストしたlib要素は、ファイルセットを指定します。 このファイルセットに含まれるすべてのファイルは、WARファイルのWEB-INF/libディレクトリに格納されます。

classes

ネストしたclasses要素は、ファイルセットを指定します。 このファイルセットに含まれるすべてのファイルは、WARファイルのWEB-INF/classesディレクトリに格納されます。

webinf

ネストした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

説明

ZIPファイルを作成します。

basedir属性は、ZIPを実行するディレクトリを指定します。

ファイルのパーミッションは、生成したZIPファイルには格納されないことに注意してください。

ZIPアーカイブのファイルの集合を絞り込むこともできます。 これにはincludesincludesfileexcludesexcludesfiledefaultexcludes属性を使用します。 includesincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。

このタスクは、暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>のように、<fileset>のすべての属性(dirbasedirになります)をサポートします。

または、ネストしたファイルセットか、ファイルセットへの参照を指定することができます。 この場合には、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

説明

cabタスクは、Microsoftのcabアーカイブファイルを作成します。 これは、jarzipタスクと同様に起動されます。 このタスクは、Windows上でしか動作せずに、他のプラットフォーム上では黙って無視されます。 Microsoftのcabarcツールをあなたの実行可能パスの中で利用できるようにしておかねばなりません。

ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。

このタスクは、暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>のように、<fileset>のすべての属性(dirbasedirになります)をサポートします。

パラメタ

属性 説明 必須
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クライアントを実装します。 それぞれのタスクをどのように実行するかについての解説と例については、以下を参照してください。

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>

これは、パスワードjava1coderとして、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に、パスワードjava1coderとしてログインし、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.organonymousとしてログインし、そのユーザのデフォルトディレクトリからすべての.htmlファイルをローカルマシン上のhtdocs/manualディレクトリに再帰的にダウンロードします。

ファイルの削除

すでに今は予想がつくでしょうが、ネストしたファイルセット要素をリモートのFTPサーバから削除するファイルを選択するために使用します。 なお、このファイルセットは、ローカルディレクトリではなく、リモートディレクトリに対して相対的です。 実際に、そのファイルセットのdir属性は完全に無視されます。
  <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サーバが通常ファイルをリストするフォーマットでおこなわれます。


NetRexxC

説明

(Antを)実行中のVM内で、NetRexxのソースツリーをコンパイルします。

コンパイル元とコンパイル先のディレクトリは、NetRexxのソースファイルをコンパイルするために再帰的に走査されます。 対応するクラスファイルを持たない、またはそのクラスファイルがJavaファイルよりも古いNetRexxファイルだけがコンパイルされます。

ソースツリー内のファイルは、クラスパス内にサポートファイルが適切に配置されているかを確認しながら、コンパイル先のディレクトリにコピーされます。 NetRexxコンパイラはパラメタで指定したディレクトリにクラスファイルを生成できないので、ソースファイルをコピーします。

ソースツリーのディレクトリ構造は、パッケージ階層に従わねばなりません。

コンパイル/コピーするファイルの集合を絞り込むこともできます。 これにはincludesincludesfileexcludesexcludesfiledefaultexcludes属性を使用します。 includesincludesfile属性によって、パターンを使用して取り込みたいファイルファイルを指定します。 excludeexcludesfile属性は、除外したいファイルを指定するために使用します。 これもパターンを使用します。 そして最後に、defaultexcludesによって、デフォルト除外集合を使用したいかどうかを指定できます。 ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。

このタスクは、暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>のように、<fileset>のすべての属性(dirsrcdirになります)をサポートします。

パラメタ

属性 説明 必須
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.getBytesaStringVar.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" />


RenameExtensions

説明

srcDirディレクトリ内のfromExtension文字列で終了するファイルの名前を、toExtension文字列で終了するように変更します。 replaceがtrueの場合は、ファイルが置換されるだけです。

ファイルの包含/排他の処理方法や、パターンを記述する方法については、 ディレクトリベースのタスクの節を参照してください。 このタスクは、暗黙のファイルセットを作成して、 ネストした<include><exclude><patternset>のように、<fileset>のすべての属性(dirsrcDirになります)をサポートします。

パラメタ

属性 説明 必須
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" />


Script

説明

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

VssGet

説明

Microsoft Visual SourceSafeに、GETコマンドを実行するタスクです。

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は、あるプロジェクトをビルドするために必要なタスクを実行する時に、ビルドのイベントを生成する能力があります。 これらのイベントを受け取るために、Antにリスナを追加することができます。 この能力は、たとえばAntにGUIを接続したり、IDEとAntを統合するために使用することができます。

ビルドイベントを使用するために、AntのProjectオブジェクトを作成する必要があります。 あなたのリスナをそのプロジェクトに追加するために、addBuildListenerメソッドを呼び出すことができます。 あなたのリスナは、org.apache.tools.antBuildListenerインタフェースを実装しなければいけません。 そのリスナは、以下のようなイベントを示すBuildEventsを受け取るでしょう。

コマンドラインからリスナを追加したい場合は、-listenerオプションを使用します。 たとえば、
ant -listener org.apache.tools.ant.XmlLogger
は、ビルドの進行状況のXML表現を生成するリスナを使用してAntを実行します。 このリスナは、標準出力にログを生成するデフォルトのリスナと同様に、Antに含まれています。

独自タスクの記述

あなた独自のタスクを記述することは、以下に示すように非常に簡単です。

  1. org.apache.tools.ant.Taskを拡張してJavaクラスを作成します。
  2. 各属性に対して、setterメソッドを記述します。 setterメソッドは、一つの引数を持つpublic voidメソッドでなくてはいけません。 メソッドの名前は、"set"で始まり、その後に最初の一文字を大文字に、残りを小文字にした属性名が来なくてはいけません。 属性の型はStringや、任意のプリミティブ型(それらはビルドファイル中の文字列表現から変換されます。 booleanを指定した場合には、ビルドファイル中で指定された値が"true"や"yes"、"on"のどれかであれば、メソッドにtrueが渡されます)、 クラスファイル (属性の値をプロジェクトのbasedirに対して相対的に解釈します)、他の任意のひとつのString引数のコンストラクタを持つ型です。
  3. タスクが列挙されている属性を持つ場合には、setterメソッドに対する引数としてorg.apache.tools.ant.types.EnumeratedAttributeのサブクラスを使用することを考えなければいけません。 たとえば、org.apache.tools.ant.taskdefs.FixCRLFを参照してください。
  4. 文字データをサポートしなければならないタスクは、public void addText(String)メソッドを記述します。
  5. 各ネストした要素に対しては、createやaddメソッドを記述します。 createメソッドは、引数を持たずにObject型を返すpublicメソッドでなければいけません。 createメソッドの名前は、"create"で始まり、その後に要素名が来なくてはいけません。
  6. 引数を持たずに、BuildExceptionを投げるpublic void executeを記述します。 このメソッドは、タスク自身を実装します。

タスクのライフサイクル

  1. タスクは、解析時に引数を持たないコンストラクタを使ってインスタンス化されます。 これは、決して実行されないタスクであっても、インスタンス化されることを意味しています。
  2. タスクは、継承したprojectlocation変数によって、そのプロジェクトに対する参照とビルドファイル内の位置を取得します。
  3. ユーザが、タスクにid属性を指定した場合には、プロジェクトは解析時にこの新しく作成したタスクに対する参照を登録します。
  4. タスクは継承したtarget変数によって、それが属しているターゲットへの参照を取得します。
  5. 解析時に、init()を呼び出します。
  6. 解析時に、このタスクのcreateXXX()メソッドでこのタスクのXML要素のすべての子要素を作成するか、 addXXX()メソッドでインスタンス化してからこのタスクに追加します。
  7. 実行時に、このタスクのすべての属性を、それに対応するsetXXXメソッドによって設定します。
  8. 実行時に、このタスクに対応したXML要素内の内容の文字データ部分を、addTextメソッドによってタスクに追加します。
  9. 実行時に、すべての子要素のすべての属性を、それに対応するsetXXXメソッドによって設定します。
  10. 実行時に、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;
  }
}

実際にこれは非常に簡単です;-)

あなたのタスクをシステムに追加することも、以下に示すように簡単です。

  1. Antを起動した時に、あなたのタスクを実装しているクラスが、クラスパス内にあるかどうかを確認します。
  2. あなたのプロジェクトに、taskdef要素を追加します。 これは実際にあなたのタスクをシステムに追加します。
  3. ビルドファイルの他の部分であなたのタスクを使用します。

<?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ファイルに追加することです。 その後は、タスクが組み込みであるかのように使用することができます。


FAQ、DTD、外部リソース

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.