Java の ant の使い方
Menu Menuant は、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 の意味は複雑怪奇。頑張って調べるしかない。
おまけ - 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 に入る。