antとはJavaでできたビルドツールです。と私も言われましたがいまひとつイメージが わかないので、実際に調べながら使ってみました。口で言われてもなかなかわからない ものですね。
EclipseなどのIDEを使用していると、プロジェクトの作成時に、 「ソースはここで?、classはここに出力して?。」と設定ができます。 そしてJarがほしくなれば、エクスポートなどからJarを作成できます。 便利ですね。
IDEがやってくれるからいいんじゃないの?と思いましたが、antだと便利な点もあったのです。
たとえば、VSSやCVSなどを使用している場合、「?.scc」みたいなファイルが各フォルダにできて
しまいます。それらをJarに含めたくない場合、EclipseではJarに含めるファイル一覧で
チェックボックスをはずさなければなりません。手作業でこういったことを行うのは
危険です。しかし、antなら「*.sccのファイルはJarに含めない」といった 設定が可能です。
さらに、classファイルは結局Jarファイルにして、納品されると思います。 Jarでテストなどを行うほうが、本番環境に近いのです。「コンパイルして、Jarにして、 この場所にJarを移動する」といった手順を自動化できるのもantのいいところでした。
このページで使用しているantはapache-ant-1.6.1です。最新版はApache antを参照ください。
antのマニュアル日本語訳は「http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/index.html」
インストール
解凍して、Cドライブの直下におきました。置くだけでOKです。
1.6以降?はJDKのtool.jarを外部jarファイル追加しないと動かない。
antの実行
コマンドプロンプトでantのインストールフォルダに移動し、 「ant」とたたけば動きます。動作内容は「build.xml」に記述します。
このbuild.xmlはどこにあってもよいようです。(名前も別になんでもよいみたい)
「ant」とたたいた場合、antのインストールディレクトリにあるbuild.xmlが 読み込まれます。場所や名前を変えたときは、「ant
-buildfile 場所」と打たなければ なりません。
また、antの実行に必要な設定があるようです。それらはバッチファイルを作成し、呼び出して 設定すると楽だと思います。
以下にバッチファイルの中身を記述しておきます。2?4行目で「set」している 3つの環境変数がantに必要な設定です。
rem 環境変数の設定
set ANT_HOME=antのホームディレクトリ
set JAVA_HOME=Javaのホームディレクトリ
set PATH=%PATH%;%ANT_HOME%\bin
cd %ANT_HOME%
ant -buildfile buildファイルの場所
pause
build.xml
build.xmlにはantで実行する処理を記述します。
01<?xml version="1.0" encoding="Shift_JIS"?>
02<project name="projectName" default="makeDir" basedir=".">
03
04 <property file="build.properties" />
05 <property file="project.properties" />
06
07 <target name="makeDir" description="ディレクトリの作成">
08 <echo>ディレクトリを作成します。</echo>
09 <mkdir dir="${tempPath}" />
10 <mkdir dir="${tempSrcPath}" />
11 <mkdir dir="${tempClassesPath}" />
12 <mkdir dir="${tempLibPath}" />
13 </target>
14</project>
このbuild.xmlではディレクトリの作成のみ行っております。 コンパイルを実行するときに「作業フォルダを作る」ときなどに利用できます。 ではこのbuild.xmlの説明をしたいと思います。
- 1行目:XMLなので宣言しております。DTDはantで生成できるみたいです。 eclipseを使えば、antビルダーみたいなのがついてるので、それを活用するとよいでしょう。
- 2行目:projectタグは処理たちをまとめる単位みたいなものです。
default属性にはant実行時になにも引数で与えられなかった場合に実行されるターゲットの名前を書きます。
basedir属性には「すべてのパスの処理がおこなわれるベースディレクトリ」を指定します。 - 04,05行目:プロパティファイルを読み込んでいます。 プロパティファイルにはプロパティを記述し、build.xmlで変数として使えるので 値をまとめておくには最適です。(後に説明します。)
- 7行目:targetタグには処理を記述します。このターゲットをまとめるのが先ほど出てきた
projectタグです。targetの中にはさまざまなビルドタスク(処理)を書くことができます。
例えば、「コンパイルからJarファイルの作成を行うターゲット」としてもいいですし、 「コンパイルだけおこなうターゲット」のようにも分けれます。 - 8行目:echoタグでコンソールにメッセージを表示することができます。
- 9?12行目:mkdirタグでディレクトリを作成しています。ディレクトリの指定に変数を使用してます。 「${tempPath}」というのがそれです。(後に説明します。)
以外に簡単ですね。あとはantのマニュアルが翻訳されているので、そこの「ビルド内のタスク」という ところから、したいことを見つけてかけば完成です。
プロパティファイル
プロパティファイルにはプロパティをまとめて記述しておくことができます。 これにより、修正作業が楽になり、設定の変更に柔軟に対応できます。では、実際にどんなものか みてみましょう。
# project.propertiesファイル
#
# 作業フォルダの場所
tempRoot=./
# 作業フォルダ名
tempDir=temp
# 作業フォルダのパス
tempPath=${tempRoot}${tempDir}
# ソースのコピー先フォルダ名
tempSrcDir=src
# クラスの出力先フォルダ名
tempClassesDir=classes
書き方は簡単ですね。#の行はコメントです。ここで設定された変数は
${変数名}で使用することができます。また、このプロパティファイル内でも 使用できます。
プロパティファイルで「ソースの置き場所」や「出力先」を指定できれば すてきなbuildスクリプトができます。
パスを記入する時に「¥」だとエスケープされてしまうため「/」を利用しましょう。
実行
antの実行で作成したbuild.xmlを指定して実行します。バッチファイルにしておくと便利でしょう。