* Apache Ant - 一連の処理を自動化するためのツール [#h211c144]

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

[build.xmlのサンプル]~
 ・[[WARファイルを作成する>Antスクリプトサンプル#makewar]]~
 ・[[SQLを実行する>Antスクリプトサンプル#runsql]]~

(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形式で記述する。
  (タスクによって必要な属性は異なる)~

#html( [build.xml の構成])
|<project 属性A=xxxxx 属性B=xxxxx >&br;    <target1 属性A=xxxxx 属性B=xxxxx>&br;        <タスク 属性A=xxxxx 属性B=xxxxx>&br;         ・・・&br;        </タスク>&br;        <タスク 属性A=xxxxx 属性B=xxxxx>&br;         ・・・&br;        </タスク>&br;    </target1>&br;    <target2 属性A=xxxxx 属性B=xxxxx>&br;        <タスク 属性A=xxxxx 属性B=xxxxx>&br;         ・・・&br;        </タスク>&br;        <タスク 属性A=xxxxx 属性B=xxxxx>&br;         ・・・&br;        </タスク>&br;    </target2>&br;</project>|

#html(<br/>)

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

#html(<br/>)

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

#html(<br/>)

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