javaタスク

広告

ここではコンパイルされたプログラムをAntから実行する方法について見ていきます。「java」タスクを使います。

「Java」タスクでも数多くの属性が用意されていますが、基本となるのは下記の属性です。

属性説明必須
classname実行するJavaのクラスclassnameかjarのどちらかが必須
jar実行するjarファイルの場所(forkがtrueである必要があります)classnameかjarのどちらかが必須
classpath使用するクラスパス×
forkクラスの実行を別のVMで行います×

実行するクラスファイル名を「classname」属性で指定するか、または「jar」属性でjarファイルを指定してください。クラスファイル名は拡張子は付けずに指定します。(test.classだったらtest)。

また実行するクラスが置かれているディレクトリを「classpath」属性で指定します。

では実際に試してみましょう。今回の構成は下記のようになっています。

-sample5     build.xml
  |
  +--src     test.java
  |
  +--class   test.class

Antではコンパイルして実行させるようにしてみます。

コンパイルするプログラムファイルは下記です。

test.java

public class test{
  public static void main(String args[]){
    System.out.println("Antの実験です");
  }
}

build1.xml

<?xml version="1.0" encoding="Shift_JIS"?>

<project name="antsample" default="compile">

  <target name="compile">
    <javac srcdir="./src" destdir="./class" />
  </target>

  <target name="exec">
    <java classname="test" classpath="./class" />
  </target>

</project>

ではantを実行してみます。今回は「compile」ターゲットの後に「exec」ターゲットを実行します。

AntでのJavaタスク

上記のようにコンパイル後に実行が行われます。

同じディレクトリが繰り返し使われていますので、プロパティを用いて下記のように記述してもいいと思います。

<?xml version="1.0" encoding="Shift_JIS"?>

<project name="antsample" default="compile">

  <property name="src" location="./src"/>
  <property name="class" location="./class"/>

  <target name="compile">
    <javac srcdir="${src}" destdir="${class}" />
  </target>

  <target name="exec">
    <java classname="test" classpath="${class}" />
  </target>

</project>

depends属性を使う

またJavaを実行する前にコンパイルが必ず行われるようにするには、ターゲット要素の「depends」属性を使って下記のように記述しておけば、「exec」ターゲットだけ実行するだけでよくなります。

build3.xml

<?xml version="1.0" encoding="Shift_JIS"?>

<project name="antsample" default="compile">

  <property name="src" location="./src"/>
  <property name="class" location="./class"/>

  <target name="compile">
    <javac srcdir="${src}" destdir="${class}" />
  </target>

  <target name="exec" depends="compile">
    <java classname="test" classpath="${class}" />
  </target>

</project>

このようにした場合は「exec」ターゲットだけを実行すれば、もしコンパイルが先に行われていなければまず「compile」ターゲットが実行されてから「exec」ターゲットを実行します。

AntでのJavaタスク

( Written by Tatsuo Ikura )