2003年度 データベース論

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