2003年度 データベース論

Ant
ソフトウェア特論
第8回 / 2004-07-02
お知らせ


レポート課題を出しています。
提出は 7/30 (金) まで。
きょうの目標

Ant の基本について理解する。
Ant の概要
Ant とは何か




Javaのプログラムのコンパイルや実行を手
助けしてくれるツール
例えば、コンパイルや実行のときに必要な、
Jarファイルやオプションの指定が楽になる。
「ビルドツール」と呼ばれる。
Unix での make のようなもの
Ant の特徴


Javaでできているので、環境に依存しない。
標準で多くの処理が組み込みに。


javac, java, javadoc, cvs, メール送信など。
処理内容はXMLファイルに記述


build.xml というファイルに記述する
makeの「タブ地獄」よ、さようなら。
Ant を動かすには


環境変数 ANT_HOME の設定が必要
%ANT_HOME&\bin に path を通す
build.xml の記述
build.xml





Ant では、プログラムのコンパイルや実行
の方法を build.xml というファイルに記述
する。
ひとつのproject要素
projectには複数のtarget要素
targetには複数のtask
propertyで名前と値をペアで管理
property


名前と値がペアになっているもの
プロパティの設定
<property name="srcDir" value="src" />

プロパティへのアクセス
${srcDir}
task


処理の最小単位
さまざまなtaskが標準で用意されている




java / javac / jar / javadoc
mkdir / zip
tstamp
など
javac という task
<javac srcdir="${srcDir}"
destdir="${classDir}" />



ソースファイルのコンパイルを行う
srcdir 属性がソースファイルのありか
destdir 属性がクラスファイルの生成先の
ディレクトリ
target (1)

複数のtaskをまとめたもの


例えば、「ディレクトリを作って」「コンパイルを
行う」など
Ant で処理を行う場合の基本単位
target (2)
<target name="compile“ depends="init">
<mkdir dir="${classDir}" />
<javac srcdir="${srcDir}"
destdir="${classDir}" />
</target>

“compile” というターゲット名
targetの依存関係 (1)




このtargetを処理するために必要なtarget
たとえば、Jarファイルを作成する前にコン
パイルが必要。
あるtargetだけを取り出して処理することも
可能。
たとえば、Javadoc の作成など。
targetの依存関係 (2)
compile の前に init の処理
<target name="compile" depends="init">
<mkdir dir="${classDir}" />
<javac srcdir="${srcDir}"
destdir="${classDir}" />
</target>
<target name="jar" depends="compile">
<jar jarfile="csv.jar"
basedir="${classDir}" />
</target>
パターン (1)


ファイルやディレクトリの指定で、Windows
や Unix のようなパターンを使える。
*.java



.java や a.java にマッチ。
a.xml にはマッチしない。
?.java

b.java にマッチ。 .java にはマッチしない。
パターン (2)

csv/**


csv ディレクトリ以下の、すべてのファイル・
ディレクトリにマッチする。
**/*.java

すべてのディレクトリの *.java にマッチする。
もう一つの例
環境変数の取得


環境変数をよみこみ、env という変数に格
納
<property environment="env"/>
環境変数 JWSDP の値(+ /jaxrpc)を、
jaxrpc.home プロパティの値とする。
<property name="jaxrpc.home"
value="${env.JWSDP_HOME}/jaxrpc"/>
クラスパスの設定 (1)
<path id="wspack.classpath">
<pathelement location=
"${jaxrpc.home}/lib/jaxrpc-api.jar"/>
<pathelement location=
"${jaxrpc.home}/lib/jaxrpc-impl.jar"/>
</path>
クラスパスの設定 (2)
<target name="compile" depends="init">
<javac srcdir=".">
<include name="*.java" />
<classpath>
<path refid="wspack.classpath"/>
</classpath>
</javac>
</target>
Ant の実行
Ant の実行 (1)


build.xml があるディレクトリで実行する。
ant



デフォルトの target が実行される。
この場合は all という target
このとき、target の依存関係をたどり、必要な target
から順に実行される。
<project name="csv" default="all" basedir=".">
Ant の実行 (2)

ant compile

compile target が実行される。