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 属性が指定されている場合、指定されたオペレーティングシステムのいずれかで実行されているときだけ、コマンドが実行されます。

Note that you cannot interact with the forked program, the only way to send input to it is via the input and inputstring attributes. Also note that in Ant 1.6, any attempt to read input in the forked program will receive an EOF (-1). This is a change from Ant 1.5, where such an attempt would block.

生成したプログラムと対話することはできません。 input属性、および inputstring 属性で指定した入力を通してのみ、プログラムに入力を渡すことができます。 Ant 1.6では、プログラムは EOF (-1) を受け取ります。 動作しなくなることを防ぐため、Ant1.5から動作が変更されています。

Cygwin Users

Cygwinユーザへの注意

In general the <exec> task will not understand paths such as /bin/sh for the executable parameter. This is because the Java VM in which Ant is running is a Windows executable and is not aware of Cygwin conventions.

<exec>タスクでは一般に /bin/sh のようなパスを理解しません。 この理由は、Antを実行しているJavaVMはWindowsの実行ファイルであり、Cygwinのルールは解釈しないからです。

OpenVMS Users

OpenVMS ユーザへの注意

The command specified using executable and <arg> elements is executed exactly as specified inside a temporary DCL script. This has some implications:

executableおよび<args>要素で指定したコマンドは、 DCL一時スクリプト内でのみ実行されます。これは少々の前提条件があります:

For <exec> to work in an environment with a Java VM older than version 1.4.1-2 it is also required that the logical JAVA$FORK_SUPPORT_CHDIR is set to TRUE in the job table (see the JDK Release Notes).

<exec>を 1.4.1より前のJavaVMで動作させるためには、 ジョブテーブルのJAVA$FORK_SUPPORT_CHDIRTRUE に設定されている必要があります(JDK リリースノートを参照)。

Please note that the Java VM provided by HP doesn't follow OpenVMS' conventions of exit codes. If you run a Java VM with this task, the task may falsely claim that an error occured (or silently ignore an error). Don't use this task to run JAVA.EXE, use a <java> task with the fork attribute set to true instead as this task will follow the VM's interpretation of exit codes.

HPから提供されているJavaVMでは、OpenVMSのリターンコードに準じない点に注意が必要です。 このタスクでJavaVMを使う場合、エラーが発生していないのにエラーだとみなされる (またはエラーが無視される)結果となります。 リターンコードを正しく解釈させるために、JAVA.EXEを実行する場合はこのタスクを使用せず、 fork属性をtrueにした<java>タスクを使ってください。

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
spawn whether or not you want the command to be spawned
Default is false.
If you spawn a command, its output will not be logged by ant.
The input, output, error, and result property settings are not active when spawning a process.
since Ant 1.6
No
output Name of a file to which to write the output. If the error stream is not also redirected to a file or property, it will appear in this output. No
error The file to which the standard error of the command should be redirected. since Ant 1.6 No
logError This attribute is used when you wish to see error output in Ant's log and you are redirecting output to a file/property. The error output will not be included in the output file/property. If you redirect error with the "error" or "errorProperty" attributes, this will have no effect. since Ant 1.6 No
append Whether output and error files should be appended to or overwritten. Defaults to false. No
outputproperty The name of a property in which the output of the command should be stored. Unless the error stream is redirected to a separate file or stream, this property will include the error output. No
errorproperty The name of a property in which the standard error of the command should be stored. since Ant 1.6 No
input A file from which the executed command's standard input is taken. This attribute is mutually exclusive with the inputstring attribute. since Ant 1.6 No
inputstring A string which serves as the input stream for the executed command. This attribute is mutually exclusive with the input attribute. since Ant 1.6 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 return code signaling failure. 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
resolveExecutable When this attribute is true, the name of the executable if resolved firstly against the project basedir and if that does not exist, against the execution directory if specified. On Unix systems, if you only want to allow execution of commands in the user's path, set this to false. since Ant 1.6 No, default is false
属性 説明 必須
command 引数を全て指定した、コマンド行。 非推奨です。代わりに executable と<arg> 内部要素を使用してください どちらかひとつ
executable コマンド。引数は含まない。
dir コマンドを実行するディレクトリ。 No
os コマンドを実行するオペレーティングシステムのリスト。 現在のOSがリストに含まれる場合、コマンドは実行されます。 OSの名前はJavaVMにより、"os.name"システムプロパティに格納されています。 No
spawn コマンドを別プロセスにするかどうか。
デフォルトは false。
trueにした場合、コマンドの出力はAnt側では記録されない。
入力、出力、エラー、結果に関するプロパティは指定できない。
Ant 1.6〜
No
output コマンドの出力がリダイレクトされるファイル。 エラー出力先が別に指定されていない場合、それもこの出力に含まれる。 No
error コマンドのエラー出力がリダイレクトされるファイル。Ant 1.6〜 No
logError 出力のリダイレクト先を output や outputproperty で指定している場合で、 エラー出力をAnt側で表示したいときに指定する。 これを指定すると、エラー出力は output や outputproperty には含まれなくなる。 "error"または"errorProperty"を指定している場合は無視される。 Ant 1.6 〜 No
append 出力先が既存ファイルである場合、上書きするのではなく追記する。 デフォルトはfalse (上書き)。 No
outputproperty コマンドの出力が格納されるプロパティ名。 エラー出力のリダイレクト先を指定していない場合は、エラー出力もあわせて格納される。 No
errorproperty エラー出力が格納されるプロパティ名。Ant 1.6〜 No
input コマンドが標準入力から受け取る場合の入力元ファイル。 inputstring要素と同時には指定できない。Ant 1.6〜 No
inputstring コマンドが標準入力から受け取る場合の入力文字列。 input要素と同時には指定できない。Ant 1.6〜 No
resultproperty コマンドのリターンコードが格納されるプロパティ名。 failonerror が false である場合のみ意味がある。 No
timeout 指定された時間内に終了しない場合は、コマンドを止める(単位はミリ秒)。 No
failonerror コマンドが失敗を意味するリターンコードで終了する場合は、ビルドプロセスを止める。 デフォルトは false。 No
failifexecutionfails コマンドを実行開始できなかった場合、ビルドプロセスを止める。 デフォルトは true。 No
newenvironment 新しい環境変数を指定する場合、古い環境変数は継承しない。 No, default is false
vmlauncher Java VM が持つ実行機能を用いてコマンドを実行するかどうか。 false と設定した場合、OSのシェルが直接、あるいはantRun スクリプト経由で使われる。 これにより、一部の OS で、通常はVMから利用できない機能 ―― Windows上でスクリプトを実行するなど ―― を利用することができる 実行ファイルの名前を dir 属性で指定したディレクトリからの相対パスで指定したい場合には、 vmlauncher は false に設定する必要がある。 No。デフォルトは true
resolveExecutable trueに設定すると、まずexecutableの名前を、 まずプロジェクトのベースディレクトリを用いて解決することを試み、 存在しなければ実行ディレクトリから探索する。 Unixシステム上において、ユーザパス上に存在するコマンドのみを実行したい場合、falseに設定する。 Ant 1.6〜 No, デフォルトはfalse

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 return code signaling failure (OS specific) causes the build to fail. 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"と設定してある場合、 リターンコードが失敗を意味する(OSに依存する)ものであれば、 ビルドは中断します。resultpropertyが設定してある場合、 リターンコードはその名前のプロパティに格納されます (もちろん、不変性を除きます)。

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

プログラムを起動できず、OS依存のエラーコードが返された場合、 failifexecutionfailsfalseでなければ、 <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を追加します。

<property name="browser" location="C:/Programme/Internet Explorer/iexplore.exe"/>
<property name="file" location="ant/docs/manual/index.html"/>

<exec executable="${browser}" spawn="true">
    <arg value="${file}"/>
</exec>

Starts the ${browser} with the specified ${file} and end the ant process. The browser will let be open.

指定した ${file}を引数として、${browser} を開始します。 ブラウザは開いたまま、Antプロセスは終了します。

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 が原因です。この問題は 1.2 以前の全てのJDKで発生します。

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.

タイムアウト: タイムアウトを指定し、その時間が経過した場合、 サブプロセスはKILLされ、メッセージがログに出力されます。 実行の終了コードは "-1" になります。 failonerror=trueであれば、ビルドは中断します。 そうでない場合、無視されます。


Copyright © 2000-2004 The Apache Software Foundation. All rights Reserved.
[訳注:これは漆島賢二の訳を参考に、的場が翻訳しました。日本語訳に対するコメントがあれば report@jajakarta.orgに送ってください]