ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

Antについて

Antの概要

 Antは、Jakartaプロジェクトから提供されている、Java用のメイクツールです。 Unixのメイク(make)コマンドと同じような機能があります。 ソースファイルと実行ファイルの日付を比較し、ソースファイルが更新されたものだけ、実行ファイルの生成を行うため、効率よくビルドできます。
 また、Antはjavaでできていて、javacなどのコマンドも同一VM上で動作するため、JavaVMが1回しか起動されないため、高速にビルドできます。(makeコマンドを使ってもビルド可能ですが、毎回、JavaVMが起動されるため、遅くなります。)
 Antを使ってビルドするためには、ビルド時のルールをbuild.xmlというXML形式のファイルで記述する必要があります。

buildファイル(build.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         :引数

build.xmlファイルの例

 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

Antでの文字コード変換

プロパティファイル

 Javaでは、「キー = 値」の形式で表されるデータを格納するために、プロパティファイルを使います。 プロパティファイルをアクセスするためには、java.util.Propertiesクラスを使います。
 しかし、Propertiesクラスは、ASCIIファイルしか対象としていません。 そのため、日本語の値を扱いたい場合は、native2asciiなどのツールを使って、ASCIIファイルに変換する必要があります。

native2ascii

 Antのオプショナル・タスクに含まれている、native2asciiを使うと、ファイルの内容をUnicodeエスケープ(\uXXXX)したASCIIファイルに変換できます。 オプショナル・タスクを使うには、jakarta-ant-1.4.1-optional.jarをCLASSPATHに設定する必要があります。 以下に、Antでのnative2ascii機能の使い方を説明します。

native2asciiの使い方

native2asciiタグ :ASCIIファイルへの変換
  encoding       :ファイルのエンコード指定
  src            :ソースファイルを格納するディレクトリ
  dest           :出力ファイルを格納するディレクトリ
  ext            :出力拡張子を変更(""の場合は拡張子を削除)

native2asciiの利用例

 ソースディレクトリ内の拡張子のエンコーディングに従って、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="" />

Antでのjarファイル作成

 build.xmlに、jarタグを記述することにより、classファイルをjarファイルにアーカイブすることができます。
 jarを作成する場合は、クラスファイルを${build}ディレクトリに作成するようにしています。

<target name="archive">
  <jar jarfile="${htdocs}/sample.jar" basedir="${build}"></jar>
</target>


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp