2. ビルドファイルの構成
- 2.1. プロジェクト(Project)
- 2.2. ターゲット(Target)
- 2.3. タスク(Task)
この章ではビルドファイルの主な構成要素であるプロジェクト、ターゲット、タスクについて説明します。
2.1. プロジェクト(Project)
プロジェクトはビルドに関する情報をすべて記述するファイルです。ビルドファイルには必ずひとつだけプロジェクトを定義をしなければいけません。
プロジェクト要素には3つの属性があります。
属性名 | 説明 | 必須 |
name |
プロジェクトの名前。 |
|
default |
デフォルトターゲット名。Antの起動時にターゲット名を明示しなかったときに実行されるターゲットを指定します。(Ant1.5以降では必須でなくなりました。省略時は"main"ターゲットが実行されます。) |
● |
basedir | ビルド処理を行うベースディレクトリ。絶対パス、もしくはこのビルドファイルの存在するディレクトリからの相対パスで指定します。省略時はこのビルドファイルの存在するディレクトリがベースディレクトリとなります。 |
|
以下に簡単なプロジェクト定義の例を示します。
<project name="sample_project" default="compile" basedir="."> <property name="srcdir" value="./src"> <target name="compile"> <!-- ここにコンパイルを実行するタスクを記述 --> </target> <target name="install" depends="compile"> <!-- ここにインストールを実行するタスクを記述--> </target> </project>
1行目のプロジェクト開始タグにおいてこのプロジェクトは、
- プロジェクト名が'sample_project'
- デフォルトターゲットが'compile'
- タスクを実行するベースディレクトリがこのビルドファイルの存在するディレクトリ
であることを定義しています。したがってこのビルドファイルをターゲット指定無しで実行すると、compileターゲットが実行されることになります。もしinstallターゲットを実行したければ、次のようににコマンドライン引数でターゲット名を指定します。
$ ant install
2行目ではプロパティタスクを利用してプロパティの定義が行われています。プロパティとはプロジェクト内で利用することのできる変数のようなものです。プロパティは名前と値を持っており、ここでは"./src"という値を持つ"srcdir"というプロパティが設定されています。このプロジェクト内では、${srcdir}という記述が./srcに置き換えられます。
プロパティは、この例のようにPropertyタスクを利用したり、Antのコマンドライン引数で指定することによって設定することができます。コマンドライン引数でプロパティを設定するには-Dオプションを用います。上記のsrcdirというプロパティをコマンドラインで指定するには次のようにします。
$ ant -Dsrcdir=./src
コマンドラインで指定したプロパティは、Propertyタスクの指定より優先されます。
Antにはいくつかのプロパティが組み込みこまれており、明示的に定義することなく利用することができます。利用可能な組み込みプロパティには以下のものがあります。
プロパティ名 | プロパティ値 |
basedir | project要素のbasedir属性で設定されているベースディレクトリの絶対パス |
ant.file | ビルドファイルの絶対パス |
ant.version | Antのバージョン |
ant.project.name | 現在実行しているプロジェクトの名前 |
ant.java.version | Java仮想マシンのバージョン |
また、Javaのjava.lang.System.getProperty()メソッドで取得できるプロパティもすべて組み込みプロパティとして利用することができます。たとえば${os.name}で実行されるマシンのオペレーティングシステム名を取得することができます。
それではechoタスクを利用して実際にプロパティの値を表示してみましょう。echoタスクはmessage属性に記述した文字列を表示する機能を持っています。
$ cat build.xml <project name="sample" default="showOS" basedir="."> <target name="showOS"> <echo message="OS = ${os.name}"/> </target> </project> $ ant Buildfile: build.xml showOS: [echo] OS = Linux BUILD SUCCESSFUL Total time: 1 second
ちゃんとオペレーティングシステム名が出てきましたね。この例はLinux上で実行したので"OS = Linux"という表示が出力されています。