Antは、Jakartaプロジェクトから提供されている、Java用のメイクツールです。
Unixのメイク(make)コマンドと同じような機能があります。
ソースファイルと実行ファイルの日付を比較し、ソースファイルが更新されたものだけ、実行ファイルの生成を行うため、効率よくビルドできます。
また、Antはjavaでできていて、javacなどのコマンドも同一VM上で動作するため、JavaVMが1回しか起動されないため、高速にビルドできます。(makeコマンドを使ってもビルド可能ですが、毎回、JavaVMが起動されるため、遅くなります。)
Antを使ってビルドするためには、ビルド時のルールをbuild.xmlというXML形式のファイルで記述する必要があります。
Antは、実行時にbuild.xmlを読み込み、buildを行います。 以下に、よく使うタグを簡単に説明します。
projectタグ :プロジェクトの定義を行う name :プロジェクト名の指定 default :デフォルトターゲットの指定 basedir :ベースディレクトリの指定 propertyタグ :定数の定義をおこなう name :変数名 value :設定値 targetタグ :ターゲットの定義を行う name :ターゲット名 depends :依存ターゲット |
mkdirタグ :ディレクトリの作成を行う dir :ディレクトリ名 copyタグ :コピーを行う todir :コピー先のディレクトリ ※ファイルの指定には、filesetタグを利用 deleteタグ :削除を行う file :削除ファイル dir :削除ディレクトリ ※ファイルの指定には、filesetタグを利用 filesetタグ :ファイルの指定を行う includeタグ :包含ファイル名 excludeタグ :除外ファイル名 |
javacタグ :コンパイルを行う srcdir :Javaファイルの格納ディレクトリ destdir :クラスファイルを保存するディレクトリ includes :包含ファイル名 javaタグ :クラスを実行する classname :実行するJavaのクラス fork :実行を別のVMで行う ※パラメータの指定には、syspropertyタグや、argタグを利用 jarタグ :jarコマンドを実行する basedir :圧縮するディレクトリ jarfile :出力ファイル名 javadocダグ :javadocを実行する sourcepath :ソースファイルの格納ディレクトリ packagenames :パッケージ名 destdir :javadocを生成するディレクトリ syspropertyタグ:変数の設定を行う key :変数名 value :設定値 argタグ :コマンドライン引数の設定を行う line :引数 |
Antの生成方法は、build.xmlに記述します。
以下のbuild.xmlファイルは、Webアプリケーションをコンパイルし、インストールするためのビルドファイルです。
ターゲットにjavadocを指定すると、javadocを生成します。
また、ターゲットにcleanを指定すると、作業ファイルを削除します。
| build.xml |
|---|
<project name="Build Servlet and JSP" default="all" basedir=".">
<!-- set property -->
<property file="build.properties" />
<property name="source" value="./src" />
<property name="htdocs" value="./htdocs" />
<property name="javadoc" value="./javadoc" />
<target name="all" depends="init,compile,copy" />
<!-- Initialize -->
<target name="init">
<mkdir dir="${APPLICATION}" />
<mkdir dir="${APPLICATION}/WEB-INF" />
<mkdir dir="${APPLICATION}/WEB-INF/classes" />
<mkdir dir="${APPLICATION}/WEB-INF/lib" />
<copy todir="${APPLICATION}/WEB-INF">
<fileset dir="WEB-INF">
<include name="web.xml" />
<include name="*.tld" />
</fileset>
</copy>
</target>
<!-- compile java sources -->
<target name="compile">
<javac srcdir="${source}" destdir="${APPLICATION}/WEB-INF/classes"
classpath="${APPLICATION}/WEB-INF/classes"
encoding="${ENCODING}"
debug="on" optimize="off" deprecation="off" />
</target>
<!-- copy jsp sources -->
<target name="copy">
<copy todir="${APPLICATION}">
<fileset dir="${htdocs}">
</fileset>
</copy>
</target>
<!-- make javadoc -->
<target name="javadoc">
<delete dir="${javadoc}" />
<mkdir dir="${javadoc}" />
<javadoc sourcepath="${source}" packagenames="${PACKAGE}" destdir="${javadoc}" />
</target>
<!-- clean work file -->
<target name="clean">
<delete dir="${javadoc}" />
</target>
</project>
|
build.xmlでは、プラットフォームに固有の値をbuild.propertiesファイルで設定します。 以下のbuild.propertiesファイルは、Linux版のTomcat4.0を使った例です。
| build.properties(Linux版 Tomcat4.0の例) |
|---|
APNAME=WebApp
PACKAGE=jp.ash.webapp
ENCODING=EUC-JP
TOMCAT_HOME=/usr/local/jakarta-tomcat
SERVER=${TOMCAT_HOME}/webapps
APPLICATION=${SERVER}/${APNAME}
|
また、Windows2000版のWebLogicServer6.1を使った場合は、以下のようになります。
| build.properties(Windows2000版 WebLogicServer6.1の例) |
|---|
APNAME=WebApp
PACKAGE=jp.ash.webapp
ENCODING=Shift_JIS
WL_HOME=c:/bea/wlserver6.1
SERVER=${WL_HOME}/config/mydomain/applications
APPLICATION=${SERVER}/${APNAME}
|
Antを使ってビルドするには、build.xmlのあるディレクトリでantを実行します。 ターゲット名を指定すると、そのターケットだけをビルドできます。
●ビルド方法 # cd build.xmlのあるディレクトリ # ant ●ターゲット指定によるビルド方法 ・javadocを生成する場合 # ant javadoc ・作業ファイルを削除する場合 # ant clean |
Javaでは、「キー = 値」の形式で表されるデータを格納するために、プロパティファイルを使います。
プロパティファイルをアクセスするためには、java.util.Propertiesクラスを使います。
しかし、Propertiesクラスは、ASCIIファイルしか対象としていません。
そのため、日本語の値を扱いたい場合は、native2asciiなどのツールを使って、ASCIIファイルに変換する必要があります。
Antのオプショナル・タスクに含まれている、native2asciiを使うと、ファイルの内容をUnicodeエスケープ(\uXXXX)したASCIIファイルに変換できます。 オプショナル・タスクを使うには、jakarta-ant-1.4.1-optional.jarをCLASSPATHに設定する必要があります。 以下に、Antでのnative2ascii機能の使い方を説明します。
native2asciiタグ :ASCIIファイルへの変換 encoding :ファイルのエンコード指定 src :ソースファイルを格納するディレクトリ dest :出力ファイルを格納するディレクトリ ext :出力拡張子を変更(""の場合は拡張子を削除) |
ソースディレクトリ内の拡張子のエンコーディングに従って、ASCIIファイルへ変換するためのビルドファイル(build.xml)の例です。
propertiesファイルの拡張子のエンコード指定に従って、native2asciiを使ってASCIIファイルのpropertiesファイルを作成しています。
<native2ascii encoding="Shift_JIS" src="source" dest="source" includes="**/*.properties.Shift_JIS" ext="" /> <native2ascii encoding="EUC-JP" src="source" dest="source" includes="**/*.properties.EUC-JP" ext="" /> <native2ascii encoding="ISO-2022-JP" src="source" dest="source" includes="**/*.properties.ISO-2022-JP" ext="" /> <native2ascii encoding="UTF-8" src="source" dest="source" includes="**/*.properties.UTF-8" ext="" /> <native2ascii encoding="UTF-16" src="source" dest="source" includes="**/*.properties.UTF-16" ext="" /> |
build.xmlに、jarタグを記述することにより、classファイルをjarファイルにアーカイブすることができます。
jarを作成する場合は、クラスファイルを${build}ディレクトリに作成するようにしています。
<target name="archive">
<jar jarfile="${htdocs}/sample.jar" basedir="${build}"></jar>
</target>
|