Exec

Description

説明

Executes a system command. When the os attribute is specified, then the command is only executed when Ant is run on one of the specified operating systems.

システムコマンドを実行します。 os属性が指定された場合、 Ant が指定されたオペレーティングシステムの一つの上で実行されている時のみコマンドを実行します。

Parameters

パラメータ

Attribute Description Required
command the command to execute with all command line arguments. deprecated, use executable and nested <arg> elements instead. Exactly one of the two.
executable the command to execute without any command line arguments.
dir the directory in which the command should be executed. No
os list of Operating Systems on which the command may be executed. If the current OS's name is contained in this list, the command will be executed. The OS's name is determined by the Java Virtual machine and is set in the "os.name" system property. No
output the file to which the output of the command should be redirected. No
append whether output should be appended to or overwrite an existing file. Defaults to false. No
outputproperty the name of a property in which the output of the command should be stored. No
resultproperty the name of a property in which the return code of the command should be stored. Only of interest if failonerror=false No
timeout Stop the command if it doesn't finish within the specified time (given in milliseconds). No
failonerror Stop the buildprocess if the command exits with a returncode other than 0. Defaults to false No
failifexecutionfails Stop the build if we can't start the program. Defaults to true. No
newenvironment Do not propagate old environment when new environment variables are specified. No, default is false
vmlauncher Run command using the Java VM's execution facilities where available. If set to false the underlying OS's shell, either directly or through the antRun scripts, will be used. Under some operating systems, this gives access to facilities not normally available through the VM including, under Windows, being able to execute scripts, rather than their associated interpreter. If you want to specify the name of the executable as a relative path to the directory given by the dir attribute, it may become necessary to set vmlauncher to false as well. No, default is true
属性 説明 必須
command 全てのコマンドライン引数を付けて実行するコマンド。 非推奨。 代わりに executable属性と、 <arg>要素をネストして使ってください。 正しく 2 つのうちの 1つ
executable コマンドライン引数を含まない、実行するコマンド
dir コマンドを実行するディレクトリ No
os コマンドが実行される予定のオペレーティングシステムのリスト。 このリストに現在のOSの名前が含まれている場合、 コマンドは実行されます。 OSの名前は Java 仮想マシンにより決定され、 システムプロパティの "os.name" に設定されています。 No
output コマンドの出力をリダイレクトするファイル No
append 出力は既存のファイルに追記するか上書きするか。 デフォルトは false No
outputproperty コマンドの出力が保存されるプロパティ名 No
resultproperty コマンドの終了コードが保存されるプロパティ名。 failonerror=false の時のみ意味があります。 No
timeout 指定された時間内(ミリ秒単位で与えられる) にコマンドが終了しなかった場合、停止する。 No
failonerror 終了コードが 0 以外の値で終了した時に、 ビルドプロセスを停止する。 デフォルトは false No
failifexecutionfails プログラムが起動できない場合にビルドを停止する。 デフォルトは true No
newenvironment 新しい環境変数が指定された場合、 古い環境は伝播しない。 No、デフォルトはfalse
vmlauncher 利用可能な Java VM の実行機能を用いてコマンドを実行します。 false に設定された場合、直接、あるいは antRun スクリプトにより、 OS 上のシェルが使われます。 一部の OS では、これにより、 Windows 上で割り当てられているインタプリタを実行するのではなく、 スクリプトを実行できるといった事を含む、 VMからは通常は利用できない機能にアクセスできるようになります。 実行ファイルの名前を dir 属性により与えられるディレクトリの相対パスで指定したい場合には、 vmlauncher もまた false に設定する必要があります。 No、デフォルトはtrue

Examples

<exec dir="${src}" executable="cmd.exe" os="Windows 2000" output="dir.txt">
  <arg line="/c dir"/>
</exec>

Parameters specified as nested elements

ネストされる要素により指定されるパラメータ

arg

Command line arguments should be specified as nested <arg> elements. See Command line arguments.

コマンドライン引数はネストされた <arg>要素により指定しなければなりません。 コマンドライン引数をご覧ください。

env

It is possible to specify environment variables to pass to the system command via nested <env> elements.

ネストされた<env>要素により、 システムコマンドに渡すための環境変数を指定することができます。

Attribute Description Required
key The name of the environment variable. Yes
value The literal value for the environment variable. Exactly one of these.
path The value for a PATH like environment variable. You can use ; or : as path separators and Ant will convert it to the platform's local conventions.
file The value for the environment variable. Will be replaced by the absolute filename of the file by Ant.
属性 説明 必須
key 環境変数名 Yes
value 環境変数のリテラルの値 厳密に、これらのうちの一つ
path パスのような環境変数の値。 ; や : を区分記号として使え、 Ant はプラットホームのローカル規約に従い変換します。
file 環境変数の値。 Ant によりファイルの絶対パスファイル名に変換されます。

Errors and return codes

エラーおよび終了コード

By default the return code of a <exec> is ignored; when you set failonerror="true" then any non zero response is treated as an error. Alternatively, you can set resultproperty to the name of a property and have it assigned to the result code (barring immutability, of course).

デフォルトでは<exec>の終了コードは無視されます; failonerror="true" に設定したとき、 非ゼロの終了コードはエラーとして扱われます。 一方、 resultproperty を プロパティ名に設定し、 終了コードを割り当てることができます。 (当然、変わらなければですが)

If the attempt to start the program fails with an OS dependent error code, then <exec> halts the build unless failifexecutionfails is set. You can use that to run a program if it exists, but otherwise do nothing.

OS 依存のエラーコードによりプログラムの起動の試みに失敗した場合、 failifexecutionfailsが設定されない限りは、 then <exec> はビルドを停止します。 これを、プログラムがあれば実行し、 無ければ何もしないという事に使えます。

What do those error codes mean? Well, they are OS dependent. On Windows boxes you have to look in include\error.h in your windows compiler or wine files; error code 2 means 'no such program', which usually means it is not on the path. Any time you see such an error from any ant task, it is usually not an ant bug, but some configuration problem on your machine.

エラーコードの意味は何でしょう。そう、それは、OS 依存なのです。 Windows マシンでは、 Windows 上のコンパイラの include\error.h を見るか、wine ファイルを見なければなりません; エラーコード 2 は 'そのようなプログラムはありません' ということを意味します。 これは通常、実行パスに実行ファイルが無いことを意味します。 いつでも、任意の Ant タスクでこのようなエラーをみかけ、 これは Ant のバグではなく、自分のマシンの設定の問題なのです。

Examples

<exec executable="emacs" >
  <env key="DISPLAY" value=":1.0"/>
</exec>

starts emacs on display 1 of the X Window System.

X Windows System のディスプレイ番号 1 上で、 emacsを起動します。

<exec ... >
  <env key="PATH" path="${java.library.path}:${basedir}/bin"/>
</exec>

adds ${basedir}/bin to the PATH of the system command.

システムコマンドのPATHに、 ${basedir}/binを追加します。

Note: Although it may work for you to specify arguments using a simple arg-element and separate them by spaces it may fail if you switch to a newer version of the JDK. JDK < 1.2 will pass these as separate arguments to the program you are calling, JDK >= 1.2 will pass them as a single argument and cause most calls to fail.

注意: 簡単な arg 要素で、複数の引数を空白文字で区切って指定した場合、 動作する場合もありますが、 新しいバージョンの JDK に変更した場合、コマンドの実行に失敗します。 JDK 1.2 より前では、 これらを別々の引数として起動するプログラムに渡し、 JDK 1.2 以上では、 これらを一つの引数として渡し、 ほとんどの場合、呼び出しに失敗してしまいます。

Note2: If you are using Ant on Windows and a new DOS-Window pops up for every command which is executed this may be a problem of the JDK you are using. This problem may occur with all JDK's < 1.2.

注意2: Windows 上で Ant を使っており、 実行した全てのコマンドで新しい DOS ウィンドウが開かれる場合、 これは使っている JDK の問題です。 この問題は JDK 1.2 よりも前の全てので起きます。

Timeouts: If a timeout is specified, when it is reached the sub process is killed and a message printed to the log. The return value of the execution will be "-1", which will halt the build if failonerror=true, but be ignored otherwise.

タイムアウト: timeout が指定された場合、 その時間がくると、サブプロセスが停止させられ、 メッセージがログに表示されます。 実行の終了コードは "-1" になります。 failonerror=trueに設定した場合、 ビルドは停止しますが、 そうでない場合、無視されます。


Copyright © 2000-2002 Apache Software Foundation. All rights Reserved.

[訳注:これは漆島賢二が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]