Java の ant の使い方

Menu Menu

ant は、Java 用の build tool である。make に相当する。

build とは、作成したプログラムをまとめて一つにする。コンパイルやlinkを行う。

Java の場合は、jar を構成するのに使う。

Eclipse では標準では jar を作れないし、単にJavaを動かすだけに Eclipse のプロジェクトを作るのは面倒。

なので、build.xmlとmanifestを用意して ant bundle として構成できるようにする。


jar

tar や zip と同じように Java のファイルをまとめたもの。jar コマンドで操作する。

jar には、通常は .class や、実行に必要なデータを入れるが、ソースコードも含めることが出来る。Java は .class から、ほぼ完全に Java sourceを復元できるので、ソースコードを隠す意味はほとんどない。


manifest

jar file を java -jar jar-file.jar で実行した時に、どのクラスのstatic void main(String []) を実行するかを指定する。

    Manifest-Version: 1.0
    Created-By: 0.1.0 (Shinji KONO @ University of the Ryukyus)
    Main-Class: test.TestManager

などと記述する。manifest を複数作ることが出来る。


build.xml

build.xml は、Makefile と違い、Project毎の差があまりないひな型を作っておくのが良い。

Java ソースコード中のコメントは UTF8 を使用する。(Eclipse でも、そのように設定する)ただし、コメントは本来「英語で記述」するのが礼儀。

例えば、

build.xml のひな型 src / bin などを使い分けるのが便利。class ファイルと java を分離する。

個々の XML Entity や property の意味は複雑怪奇。頑張って調べるしかない。

Apache Ant User Manual


おまけ - jar 中にデータファイルを含め、Java からアクセスする方法

getClass().getResource(filename) で URL を取る。

        public boolean getResource(String filename) {
                System.out.println("try to get resource ... "+filename);
                try {
                        URL rsrc = getClass().getResource(filename);
                        if (rsrc==null) throw new IOException();
                        InputStream in = rsrc.openStream();
                        return true;
                } catch (IOException e) {
                        System.out.println("failed.");
                        return false;
                }
        }

以下のように呼び出します。

	if (!sat.p.getResource("/data/example"))

このファイルは、

    <target name="jar" depends="build" >
    <mkdir dir="build/data"/> 
    <mkdir dir="jar"/> 
    <copy todir="build/data" file="src/data/README" />
    <copy todir="build/data" file="src/data/example" />
    <jar jarfile="jar/Test.jar" basedir="build" manifest="src/Test.mf"/> 
    </target>

などのように ant の build.xml で、jar file に入る。


Shinji KONO / Tue Nov 9 16:27:51 2010