- Home ›
- Apache Antの使い方 ›
- Javacタスク(コンパイル) ›
- HERE
javacタスク
では最も重要なコンパイル処理を行う方法について確認していきます。「javac」タスクを使います。
「javac」タスクでは多くの属性が用意されていますが、基本となるのは下記の3つです。
属性 | 説明 | 必須 |
---|---|---|
srcdir | ソースが置かれたディレクトリ | 必須 |
destdir | クラスファイルを保存するディレクトリ | × |
classpath | 使用するクラスパス | × |
「src」属性にはソースファイルが置かれているディレクトリを指定します。このディレクトリ内及び全てのサブディレクトリ(階層が深くなっても全てのディレクトリを再帰的に検索してくれます)内にある全てのJavaソースファイルがコンパイルの対象となります。ディレクトリの指定はbuild.xmlファイルが置かれている位置からの相対パスか絶対パスで指定します。
「destdir」属性にはコンパイル後に作成されたクラスファイルを設置するディレクトリを指定します。
「classpath」属性にはコンパイル時に指定するクラスパスがある場合に記述します。
例えば下記のような記述となります。
<?xml version="1.0" encoding="Shift_JIS" ?> <project name="antsample" default="compile"> <target name="compile"> <javac srcdir="./src" destdir="./class" /> </target> </project>
では実際に試してみます。コンパイルの対象として下記の簡単なJavaソースファイルを用意しました。
antを実行するディレクトリにbuild1.xmlを設置します。同じディレクトリ内に「src」ディレクトリを作成し、その中に先ほどの「test1.java」を設置します。またコンパイル後に作成されるクラスファイルの置き場所としてbuild.xmlが置かれているディレクトリ内に「class」ディレクトリを作成しました。
-sample1 build1.xml | +-- src test.java | +-- class クラスファイルの置き場所
build1.xmlは下記の通りです。
<?xml version="1.0" encoding="Shift_JIS" ?> <project name="antsample" default="compile"> <target name="compile"> <javac srcdir="./src" destdir="./class" /> </target> </project>
ではantを実行してみます。
上記のように「BUILD SUCCESSFULL」と表示されれば無事ビルドは成功です。実際に「class」ディレクトリに移動してクラスファイルがあるかどうか確認してみます。
「class」ディレクトリ内に「test.class」ファイルが作成されています。
ソースファイルのディレクトリの階層
「srcdir」属性に指定したディレクトリは、そのディレクトリだけが対象ではなく、そのディレクトリに含まれる全てのサブディレクトリが対象となります。
例えば下記のように「src」ディレクトリの中にいくつかのサブディレクトリが存在し、その中にJavaソースファイルが含まれていた場合を考えてみます。
-sample2 build1.xml | +-- src test.java | | | +-- sub1 sub1.java | | | +-- sub2 sub2.java | | | +--sub3 sub3.java | +-- class クラスファイルの置き場所
buildファイルは先ほどと同じ「build1.xml」ファイルを使います。これでAntを実行してみましょう。
上記のように「srcdir」属性で指定したディレクトリだけではなく、全てのサブディレクトリに含まれるソースファイルを全てコンパイルしてくれます。(コンパイルした結果作成されたクラスファイルは、元のソースファイルがどのディレクトリにあったとしても全て「destdir」属性で指定したディレクトリに格納されます)。
( Written by Tatsuo Ikura )