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> |