Apache Ant - 一連の処理を自動化するためのツール

Ant自体がJavaで書かれているのでプラットフォームに依存しない (Javaがインストールされている必要があるが。。)

[build.xmlのサンプル]
 ・WARファイルを作成する
 ・SQLを実行する

(1) Apache Antのインストール

 ・http://ant.apache.org/bindownload.cgi から apache-ant-X.X.X-bin.zip をダウンロード。

 ・上記のファイルを適当なフォルダに解凍してPATHを通す。

  ※eclipse等を使用の場合は、antプラグインをインストール。

(2) build.xml の作成

 ・Ant はデフォルトで build.xml というビルドファイルを読み込んで一連の処理(以下 タスク)を実行する。

 ・一番外側にルート要素として、project(プロジェクト)要素がある。
  プロジェクトは1つ以上のtarget(ターゲット)要素を持ち、ターゲットは複数のタスクを持つ。
  タスクには、Antに処理してほしい具体的な仕事を記述する。

 ・Antには「コア・タスク」とよばれるものが多数用意されており、「コンパイル」や、「ディレクトリ作成」、「jarコマンド」、
  「文字列の変換」等のタスクがある。タスクはタスク名と必須属性、オプション属性を、XML形式で記述する。   (タスクによって必要な属性は異なる)

 [build.xml の構成]
<project 属性A=xxxxx 属性B=xxxxx >
    <target1 属性A=xxxxx 属性B=xxxxx>
        <タスク 属性A=xxxxx 属性B=xxxxx>
         ・・・
        </タスク>
        <タスク 属性A=xxxxx 属性B=xxxxx>
         ・・・
        </タスク>
    </target1>
    <target2 属性A=xxxxx 属性B=xxxxx>
        <タスク 属性A=xxxxx 属性B=xxxxx>
         ・・・
        </タスク>
        <タスク 属性A=xxxxx 属性B=xxxxx>
         ・・・
        </タスク>
    </target2>
</project>

 [主なプロジェクト(project)属性]
属性名説明必須
nameプロジェクトに名前をつけます。NO
defaultターゲットが指定されない場合のデフォルトターゲットを指定します。YES
basedirパスの処理を行うベースディレクトリを表します。デフォルトはビルド・ファイルのあるディレクトリを表します。NO

 [主なターゲット(target)属性]
属性名説明必須
nameターゲットに名前をつけます。YES
depends依存するターゲットを表します。NO
descriptionターゲットの説明を記述できます。NO

 [主なタスク、属性] ※ http://www.jajakarta.org/ant/ant-1.5/docs/ant-1.5/j/docs/manual/index.html
タスク名処理内容属性属性内容必須
CvsCVSリポジトリに対して様々な処理を行う。command実行するCVSコマンドNo、デフォルトは"checkout"
cvsRootCVSROOT変数No
cvsRshCVS_RSH 変数No
destチェックアウトしたファイルを置くディレクトリNo、デフォルトはプロジェクトのベースディレクトリ
packageチェックアウトするパッケージまたはモジュールNo
tagチェックアウトするパッケージまたはモジュールのタグNo
date与えられた日付の最も直前のバージョンを使うNo
noexecレポートのみで、何もファイルを変更しないNo、デフォルトは"false"
portPort used by CVS to communicate with the server.No, 初期値:2401.
passfileパスワードを読み込むパスワードファイルNo、デフォルトファイルは~/.cvspass.
failonerror0以外の終了コードでコマンドが終了した場合に、 ビルドプロセスを停止するかどうか。No, デフォルトは"false"
Mkdirディレクトリを作成する。dir作成するディレクトリYes
Copy一つのファイルやファイルセットを
新しいファイルやディレクトリにコピーする。
fileコピーするファイル<fileset>要素がネストされていない限りはYes
preservelastmodifiedコピーされたファイルに、オリジナルソースファイルと
同じ最終更新時刻を設定する。
No; デフォルトはfalse.
tofileコピー先となるファイルtofile か todirのいずれかを必ず指定。
todirコピー先のディレクトリ
overwriteコピー先のファイルが新しくても
既存のファイルを上書きします。
No; デフォルトはfalse
includeEmptyDirsネストしたfilesetに入っている
空のディレクトリをコピーするか。
No; デフォルトはtrue
failonerrorコピーするファイルが存在しない場合、
警告メッセージをログ出力するが、
ビルドを停止しない。
一つのファイルのコピーの時のみ意味がある。
No、デフォルトはtrue
Delete指定したファイルを削除する。file削除するファイルです。単純なファイル名(ファイルが現在のベースディレクトリに存在する場合)、
相対パスのファイル名、またはフルパスのファイル名、のいずれかを指定。
2つのうち少なくとも1つが必要。
dir削除するディレクトリです。ディレクトリ内のファイルとサブディレクトリをすべて含む。
verbose削除された各ファイルの名前を表示する。
("true"/"false" で指定)
No; デフォルトはfalse
GetURLで指定した場所のファイルを取得する。src取得するファイルのURLYes
dest取得したファイルを保存先のファイルYes
verbose取得状況の詳細なメッセージを表示します。 ("on"/"off")No; デフォルトは "false"
ignoreerrorsエラー時にログは取るが致命的として扱わないNo; デフォルト "false"
usernameHTTP BASIC 認証のユーザ名password が設定された場合Yes
password必要となるパスワードusername が設定された場合Yes
Javacソースツリーをコンパイルする。srcdirJavaファイルの場所ネストした<src>要素が存在しないかぎりYes
destdirクラスファイルを保存する場所No
includes包括するファイル(ワイルドカードを使って指定が可能)の
カンマかスペースで区切られたリスト。
省略した時には、すべてのファイルを含む。
No
includesfile包括するファイル(ワイルドカードを使って指定が可能)の
リストを記述したファイルの名前。
No
excludes除外するファイル(ワイルドカードを使って指定が可能)の
カンマかスペースで区切られたリスト。
No
excludesfile除外するファイル(ワイルドカードを使って指定が可能)の リストを記述したファイルの名前。No
classpath使用するクラスパスNo
bootclasspathブートストラップのクラスファイルの場所No
target指定したVMのバージョンに対して、クラスファイルを生成する(例、1.1や1.2)。No
listfilesコンパイルしたソースファイルをリスト表示するかどうか。No; デフォルトは"no"
JavaJava アプリケーションを実行する。classname実行するJavaのクラスjarかクラス名のどちらか
jar実行するjarファイルの場所
args実行するクラスに与える引数。
非推奨。代わりにネストした<arg>要素を使用。
No
classpath使用するクラスパス。No
fork有効にした場合には、クラスの実行を別のVMで行う
(デフォルトは無効です)。
No
JarJAR ファイルを新規作成及び既存のファイルを更新する。destfile作成するJARファイルYes
basedirファイルをJARにする基準ディレクトリNo
compressデータを保存するだけでなく、圧縮します。デフォルトはtrue。No
encodingアーカイブに含めるファイル名に使用する文字エンコーディング。
デフォルトはUTF8。
生成されたアーカイブがJava 以外で読めなくなる可能性があるので、
この値を変更することは推奨されません。
No
includesカンマかスペースで区切られた、包括するファイルのパターンのリスト。
省略時にはすべてのファイルが含まれます。
No
includesfileファイル名。このファイルの各行が包括パターンとして解釈されます。No
excludesカンマかスペースで区切られた、除外するファイルのパターンのリスト。No
excludesfileファイル名。 このファイルの各行が除外パターンとして解釈されます。No
update出力ファイルが既に存在していた場合、
更新するか、上書きするかを指定します。
No
WarWAR ファイルを新規作成及び既存のファイルを更新する。destfile作成する war ファイルYes
webxml(WEB-INF/web.xml)で利用するための配備記述子update が true に設定されていない限り Yes
basedirjar ファイルの作成対象のトップディレクトリNo
includesカンマかスペースで区切られた
包括するファイルのパターンのリスト。
省略時はすべてのファイルが含まれます。
No
includesfileファイル名。 このファイルの各行が包括パターンとして解釈されます。No
excludesカンマかスペースで区切られた
除外するファイルのパターンのリスト。
No
excludesfileファイル名。 このファイルの各行が除外パターンとして解釈されます。No
update出力ファイルが既に存在していた場合、 更新するか、上書きするかを指定します。No
ZipZIP ファイルを新規作成及び既存のファイルを更新する。destfile作成するZIPファイル。Yes
basedirファイルをZIPするディレクトリNo
encodingZIPファイル内のファイル名に使われる文字エンコーディング。No - デフォルトはプラットホームのデフォルト文字エンコーディング
参照:http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html
includesカンマかスペースで区切られた
包括するファイルのパターンのリスト。
省略時はすべてのファイルが含まれます。
No
includesfileファイル名。 このファイルの各行が包括パターンとして解釈されます。No
excludesカンマかスペースで区切られた
除外するファイルのパターンのリスト。
No
excludesfileファイル名。 このファイルの各行が除外パターンとして解釈されます。No
update出力ファイルが既に存在していた場合、 更新するか、上書きするかを指定します。No
Unzipzip、war、tar、jar ファイルを解凍する。src解凍するアーカイブファイルセットが使われない場合 Yes
dest解凍されたファイルの保存先ディレクトリYes
overwriteアーカイブ入っているファイルよりも新しい場合でも上書きするか。No - デフォルトは true
compressionntar タスクの圧縮方法. 利用可能な値は、 "none"、"gzip"、"bzip2"。No - デフォルトは "none"
Sql一連のSQL文をJDBC を通じてデータベースで実行する。driverJDBCドライバのクラス名Yes
urlデータベースの接続URLYes
useridデータベースのユーザ名Yes
passwordデータベースのパスワードYes
srcSQL文の入っているファイル文がタグで括られない限りYes
encodingSQL文が入ってるファイルのエンコーディングNo - デフォルトは JVM のデフォルトエンコーディング
delimiter複数のSQL文を区切る文字列No、デフォルトは ";"
autocommitデータベース接続のための自動コミットフラグNo、デフォルトは"false"
printSQL文の結果セットを表示するNo、デフォルトは"false"
showheadersSQL文の結果セットのヘッダを表示するNo、デフォルトは"true"
output結果セットの出力ファイルNo (デフォルトでSystem.outに出力)
append既存のファイルに出力を追記するか、上書きするかNo
classpathドライバをロードするためのクラスパスNo (システムのクラスパスを使う)
onerrorSQL文が失敗した場合に実行するアクション: continue,stop,abortNo、デフォルトは"abort"
cachingタスクがローダーとドライバーをキャッシュするかNo (デフォルト=true)
例1)
<target name="runsql"
description="SQLを実行する" >
<sql driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/testdb" userid="userid" password="password" print="true" classpath="./lib/mysql-connector-java-5.1.5-bin.jar">
select test_id, test_name from t_test;
</sql>
</target>

例2)
<sql driver="org.database.jdbcDriver" url="jdbc:database-url" userid="sa" password="pass" src="test.sql"/>
Sleep指定した時間、処理を停止する。hoursスリープ時間に加える時間数No
minutesスリープ時間に加える分数No
secondsスリープ時間に加える秒数No
millisecondsスリープ時間に加えるミリ秒数No
failonerrorエラーが発生した場合に、停止するかどうかのフラグNo
Echoメッセージを出力する。messageエコーするメッセージYes
fileメッセージを書き出すファイルNo
append既存のファイルに追記するかどうかNo - デフォルトはfalse
levelこのメッセージがレポートされるレベルを制御する。
"error"、"warning"、"info"、"verbose"、"debug"のいずれか。
No - デフォルトは"warning"
Exec指定されたシステムコマンドを実行する。command全てのコマンドライン引数を付けて実行するコマンド。
※非推奨 代わりに executable属性と<arg>要素をネストして使ってください。
2つのうちの1つ
executableコマンドライン引数を含まない、実行するコマンド
dirコマンドを実行するディレクトリNo
osコマンドが実行される予定のオペレーティングシステムのリスト。
このリストに現在のOSの名前が含まれている場合、 コマンドは実行される。
OSの名前はJVMにより決定され、システムプロパティの
"os.name" に設定されています。
No
outputコマンドの出力をリダイレクトするファイルNo
append出力は既存のファイルに追記するか上書きするか。No - デフォルトは false
failonerror終了コードが 0 以外の値で終了した時に、 ビルドプロセスを停止する。No - デフォルトは false

(3)タスクの実行

  ・project要素のdefault属性に記述されたターゲットを実行する場合

>cd  c:\xxxxxx\xxxxxxxx  ※作成した build.xml があるディレクトリに移動
>ant

  ・ターゲット名を指定して実行する場合

>cd  c:\xxxxxx\xxxxxxxx
>ant ターゲット名

  ・ビルドファイル、及びターゲット名を指定して実行する場合

>ant ビルドファイル名 ターゲット名


 [備忘録]

※Eclipseでインストール済みのAntを使う
 ビルドファイルが特定のAntのバージョンでしか動作しない場合など、別のディレクトリにインストールしたAntを利用したい場合、
 メニューの「ウィンドウ」から「設定」を選択し、設定画面の左のツリーから「Ant」→「Runtime」→「Classpath」タブを押し、
 Set ANT_HOMEの項目にAntがインストールされているディレクトリを指定する。
 この場合、ANT_HOME/libにjarファイルをインストールしておくと、クラスパスを自動的に通してくれるので便利です。 

※AntからEclipseプロジェクトの絶対パスを取得する
 http://www.atmarkit.co.jp/fjava/javatips/061eclipse022.html

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-06-11 (木) 00:48:27 (3469d)