S-JIS[2003-12-31/2009-10-03] 変更履歴

Apache Ant

全体目次


Antのインストール方法

  1. Apache Antの バイナリーダウンロードページからアーカイブ(apache-ant-1.7.1-bin.zip)をダウンロードしてくる。[2008-12-24]
  2. ダウンロードしてきたアーカイブを適当なディレクトリーに展開する。(例:C:\apache-ant-1.7.1)
  3. 環境変数ANT_HOMEにそのディレクトリーを指定する。(ANT_HOME=C:\apache-ant-1.7.1)
  4. 環境変数PATHANT_HOME/binを追加する。 (UNIX用:ant、Windows用:ant.batが入っている)

Antの説明はANT_HOME/docs/index.html配下に入っている。(基本的にApache Antのトップページと同じ)
タスクの説明はANT_HOME/docs/manual/index.htmlの「Ant Tasks」。
API(Javadoc)はANT_HOME/docs/manual/api/index.htmlにある。

なお、Apache Antのソースダウンロードページからソース(apache-ant-1.7.1-src.zip)をダウンロードすることも出来る。
展開したapache-ant-1.7.1/srcにソースが入っている。


他に、WebLogicをインストールすると、その中にantが入っていたりする。[2007-08-26]
Windows版のWebLogic8.1の場合、「C:\bea\weblogic81\server\bin」にant.batがあるので、そこにパスを通しておけば使える。


Eclipse3にもプラグインにantが入っている。[2007-09-07]
「C:\eclipse\plugins\org.apache.ant_〜\bin」にant.batがあるので、そこにパスを通しておけば使える。
ただし、JREのjava.exeで実行すると、「Unable to locate tools.jar」(tools.jarが見つからない)というメッセージが出る。tools.jarが必要なタスクでない限りは実行自体は出来るようだが。
JDKのjava.exeであれば、「%JAVA_HOME%\lib」にtools.jarが存在しているので問題ない。

Eclipse3.2はAnt1.6.5、Eclipse3.3〜Eclipse3.4はAnt1.7.0。[2008-12-24]


antの実行方法

$ ant

これにより、カレントディレクトリに置いてあるbuild.xmlの内容に従ってコンパイル等が行われ、目的のファイルが生成される。

$ ant ターゲット

これにより、カレントディレクトリに置いてあるbuild.xml内の指定されたターゲットの実行(コンパイルやコピー等)が行われ、目的のファイルが生成される。
ターゲットが指定されていない時は、build.xml内に書かれているデフォルトターゲットを指定したことになる。

$ ant -f ファイル〔ターゲット〕

これにより、指定されたファイル(build.xmlの代わり)の内容に従ってコンパイル等が行われ、目的のファイルが生成される。

$ ant〔-f ファイル〕〔ターゲット〕-Dプロパティ名=値

これにより、build.xml内で定義していないプロパティが定義できる。

antのオプション[2007-08-15]
オプション 内容 備考
-h
-help
オプションの一覧を表示する。 --help/?と同じ意味。
-f ファイル
-file ファイル
-buildfile ファイル
build.xmlファイルを指定する。  
-Dプロパティ名= プロパティーを定義する。 <property name="プロパティ名" value=""/>と同等。
-propertyfile ファイル プロパティーファイルを指定する。 <property file="ファイル"/>と同等
-q
-quiet
静かモード?で実行する。 出力するメッセージのレベルを指定する。
ログ出力
例外が発生した場合、通常だとスタックトレースは出力されない。
-verboseもしくは-debugにすると出力されるようになる。
-v
-verbose
詳細モード?で実行する。
-d
-debug
デバッグモードで実行する。

環境変数ANT_OPTSにパラメーターを指定しておくことにより、ant実行時にそれが使われる。[2008-06-21]
antはjavaコマンドで動いているので、そのときのVMオプションにANT_OPTSの内容が指定される。
例えばANT_OPTSに「-Xms512m -Xmx512m」を付ければ、ヒープサイズを増やすことが出来る。
javac等のメモリーを多く使用するタスクを実行しているとOutOfMemoryErrorになることがある。そうした場合にヒープを増やしてみる)

Eclipseでのオプション・パラメーター指定方法
Eclipseからantを実行する方法


build.xmlの基本的な文法

  1. XMLに則って記述する。
  2. 一番外側のタグは、project
  3. projectタグ内にtargetタグを書く。
  4. targetタグ内にファイルの生成方法等を示すタグ(タスクと呼ばれる)を書く。

様々なタスクが用意されており、これらを組み合わせてコンパイル等を行う。 タスクの種類やタスクのオプションが多すぎるので、慣れるまではantは使いづらいような気が…まぁ、慣れるまで大変なのはどのツールでも同じだけど^^;
その他、プロパティを指定したり外部の環境変数を取り込んだりすることが出来る。


Javaのコンパイルを行ってwarファイルを作成するサンプル

build.xml:

<?xml version="1.0" encoding="EUC-JP"?> ←build.xml内のエンコード指定。Windowsなら"Shift_JIS"かな?
<!-- サンプル -->

<project name="sample.build"  basedir="." default="all">

        <property name="sample.home" location="sample_dir"/>
        <property name="sample.lib"   location="${sample.home}/WEB-INF/lib"/>
        <property name="sample.class" location="${sample.home}/WEB-INF/classes"/>
        <property name="sample.src"   location="${sample.home}/WEB-INF/src"/>

        <path id="classpath">
                <fileset dir="${sample.lib}" includes="*.jar"/>
                <pathelement location="${sample.class}"/>
        </path>

        <!-- Javaのコンパイル -->
        <target name="compile" >
                <mkdir dir="${sample.class}"/>

                <javac srcdir="${sample.src}" destdir="${sample.class}" encoding="MS932">
                        <classpath refid="classpath" />
                </javac>
        </target>

        <!-- warファイルの作成 -->
        <target name="war">
                <war destfile="./sample.war"
                     webxml="${sample.home}/WEB-INF/web.xml">
                        <fileset dir="${sample.home}">
                                <exclude name="**/web.xml"/>
                                <exclude name="**/src/**/*"/>
                                <exclude name="**/src"/>
                        </fileset>
                </war>
        </target>

        <!-- デフォルトターゲット -->
        <target name="all" depends="compile,war">
        </target>

</project>

「ant」(ターゲット指定無し)が実行されると、上記のbuild.xmlは以下のように解釈される。

  1. projectタグのdefault属性に従い、「all」という名前のターゲットを探して実行する。
  2. 「all」という名前のターゲットにはdepends属性が付いているので、その中で指定された名前のターゲットを順番に実行する。
    1. 「compile」という名前のターゲットを探して実行する。
      1. mkdirタスクが指定されているので、ディレクトリを作成する。(既に在ったら何もしない)
      2. javacタスクが指定されているので、コンパイルする。
    2. 「war」という名前のターゲットを探して実行する。
      1. warタスクが指定されているので、warファイルを作成する。

Ant目次へ戻る / 技術メモへ戻る / 自作タスクへ行く
メールの送信先:ひしだま