Java

説明

(Antの)実行中のVMか、指定された場合には別のVMをフォークして、Javaのクラスを実行します。

このタスクを実行したときに、一部が失敗する場合は、 新しいJVMを使うためにfork="true"を設定してください。

フォークされたVMとやりとりできないので注意してください。 入力をする唯一の方法は、inputとinputstring属性経由だけです。 Ant 1.6では、フォークされたVMで入力を読むというどんな試みも、 EOF(-1)を受け取ることに注意してください。 このような試みを防ぐのは、Ant 1.5からの変更です。

パラメータ

属性 説明 必須
classname 実行するJavaのクラス jarかクラス名のどちらか
jar 実行するjarファイルの場所(マニフェストにメインクラスのエントリーが必要)。 このオプションが選択されたときは、forkがtrueでなければなりません。 jarかクラス名のどちらか
args 実行するクラスに与える引数。 推奨されません。代わりにネストした<arg>要素を使用してください。 No
classpath 使用するクラスパス。 No
classpathref 使用するクラスパスを、任意の場所で定義した パスに対する参照として指定します。 No
fork 有効にした場合には、クラスの実行を別のVMで行います (デフォルトは無効です)。 No
spawn 可能ならant継続のプロセスを開始するために許可してください。
fork=trueは必須で、timeout、input、output、error、result属性に互換性はありません。
(デフォルトは無効)
No
jvm Javaバーチャルマシンを起動するコマンドで、デフォルトは'java'です。 このコマンドは、java.lang.Runtime.exec()で実行されます。 forkが無効な場合は無視されます。 No
jvmargs フォークされるVMに渡す引数(forkが無効な場合は無視されます)。 推奨されません。代わりにネストした <jvmarg>要素を使用してください。 No
maxmemory フォークされるVMに割り当てるメモリの最大量 (forkが無効な場合は無視されます)。 No
failonerror コマンドが0以外のリターンコードで終了した場合には、ビルドプロセスを停止します。 デフォルトは"false"です。(の注意を参照) No
resultproperty コマンドのリターンコードのプロパティ名は格納されるべきです。 failonerror=falseとfork=trueの時だけ関連があります。 No
dir VMを起動するディレクトリ (forkが無効な場合には、無視されます)。 No
output 出力を書くべきファイルの名前。 エラーストリームがファイルまたはプロパティにリダイレクトされなければ、この出力に現れます。 No
error コマンドの標準エラーがリダイレクトされるべきファイル。 No
logError Antのログ内エラー出力を確認したいときと、 ファイル/プロパティに出力をリダイレクトするときに、この属性は使われます。 エラー出力は、ファイル/プロパティの出力に含まれません。 "error"か、"errorProperty"属性のエラーをリダイレクトすると、 これは結果を持ちません。 No
append 出力とエラーのファイルは、追記か上書きのどちらにすべきか。デフォルトは、false。 No
outputproperty コマンドの出力が格納されるべきプロパティの名前。 エラーストリームが別々のファイルかストリームにリダイレクトされない限り、 このプロパティはエラー出力を含みます。 No
errorproperty コマンドの標準エラーが格納されるべきプロパティの名前。 No
input コマンドの標準入力が実行されるファイルが用いられる。 この属性は、inputstring属性と相互排他的です。 No
inputstring 実行されたコマンドの入力ストリームとしてはたらく文字列。 この属性は、input属性と相互排他的です。 No
newenvironment 新しい環境の変数が指定されたときに、 古い環境を引き継がないようにする。 デフォルトは"false" (forkが無効な場合は無視されます)。 No
timeout 指定した時間が経過してコマンドが終了しないときに コマンドを停止します(ミリ秒で指定します)。 forkが有効な場合は、使用を強く推奨します。 No

ネストした要素として指定されるパラメタ

arg and jvmarg

JavaクラスやフォークしたVMに引数を指定するために、 ネストした<arg><jvmarg>要素を使用します。 コマンドライン引数を参照してください。

sysproperty

クラスに必要なシステムプロパティを指定するために、 ネストした<sysproperty>要素を使用します。 これらのプロパティーは、クラスを実行しているVM(ANTを実行しているVMか、フォークしたVMのどちらか) に対して有効になります。 この要素に対する属性は環境変数と同じです。

syspropertyset

システムプロパティのsyspropertysetのように使われ、 プロパティ集合を指定することができます。

Ant 1.6から

classpath

Javaclasspath属性は パス類似構造 であり、ネストしたclasspath要素でも設定できます。

bootclasspath

ブートストラップのクラスファイルの場所は、 このパス類似構造によって指定されます。 - forktrueでは無いか、 ターゲットとなるVMがサポートされていない(例えば、Java1.1)とき、無視されます。

Ant 1.6から

env

env要素によって、 フォークするVMへ渡す環境変数を指定することが可能です。 execの章の説明を見てください

フォークが無効のときは、設定は無視されます。

permissions

セキュリティパーミッションは、ネストしたpermissions要素によって、 クラスの実行を、無効や許可にできます。 多くの情報はpermissionsを参照してください。

RuntimePermissionのexitVMパーミッションが許可されていない(又は無効にされている)時、 System.exit()は、failonerror内で示したように扱われ、妨げられます。

もし、failonerror="true"を指定して、permissionsを指定しなければ、 permissionsのデフォルトの設定は、 非ゼロのリターンコードが、BuildExceptionをもたらすことを確認して、 javaの呼び出しに付加されます。

もしフォークが有効ならば設定は無視されます。

Ant 1.6から

assertions

<assertions>サブ要素によって、 Java1.4のアサーションの使用可能性を制御することができます。

Ant 1.6から

エラーとリターンコード

デフォルトで、<java>のリターンコードは無視されます。 そのかわり、プロパティ名にresultpropertyを設定することができ、 結果コードにそれを割り当てます。(不変性がなければ、もちろん) failonerror="true"を設定したとき、 resultpropertyに可能な値は0だけです。 どんなゼロでない応答も、エラーのように扱われ、ビルド終了を意味します。

同様に、failonerror="false" かつ、fork="false"のとき、 <java>は、0を返さなければなりません。 そうしないと、そのビルドは、jvmビルドでクラスが実行されるように終了します。

       <java classname="test.Main">
         <arg value="-h"/>
         <classpath>
           <pathelement location="dist/test.jar"/>
           <pathelement path="${java.class.path}"/>
         </classpath>
       </java>
クラスパス上の新しいjarを使って、 このJVMの中でクラスを実行します。
        <java jar="dist/test.jar"
           fork="true"
           failonerror="true"
           maxmemory="128m"
           >
         <arg value="-h"/>
         <classpath>
           <pathelement location="dist/test.jar"/>
           <pathelement path="${java.class.path}"/>
         </classpath>
       </java>
マニフェストに書かれたエントリーポイントを使って、jarを実行します。 フォーク(必須)しており、また128MBの最大メモリーを指定しています。 0以外のリターンコードでビルドを中断します。
  <java classname="test.Main"/>
  <java classname="test.Main"
        fork="yes" >
    <sysproperty key="DEBUG" value="true"/>
    <arg value="-h"/>
    <jvmarg value="-Xrunhprof:cpu=samples,file=log.txt,depth=3"/>
  </java>
Note: (強く推奨されない)MSJVMを、JVMのように"jview.exe"として 指定することはできません。 他のJVMと異なるパラメータをとるからです。 必要であれば、JVMを<exec>で開始することができます。

Copyright © 2000-2004 The Apache Software Foundation. All rights Reserved.

[訳注:これは西野 亨、宮本信二の訳を参考に、横田聡が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]