DefaultTaskクラスの利用 (4/5)
作成:2017-10-21 10:02
更新:2017-10-21 10:02
更新:2017-10-21 10:02
■コマンドを実行する「Exec」の利用
プロジェクトで作成しているJavaプログラムではなく、その他のプログラムを実行したいこともあります。このような場合に用いられるのが「Exec」クラスです。
Execクラスは、コマンドラインからコマンドを実行する働きをします。これにもいくつかメソッドが用意されており、コマンド実行に関する設定を行うようになっています。
これも既に登場しました。引数として渡す情報を指定するものですね。これはIteratorとしてまとめて用意することもできますし、不定引数として必要な値を個別に引数指定することもできます。
とりあえず、これだけ知っていればコマンドの実行は十分できるでしょう。では、実際に簡単な例を挙げましょう。
まず、実行するコマンドとして、簡単なバッチファイルを作成しておきましょう。ここではWindowsで実行する前提で説明をします。プロジェクトのフォルダ内に、「java.bat」という名前でファイルを用意しましょう。そして以下のように記述しておきます。
見ればわかるように、Javaのバージョンを出力させるコマンドを実行しているだけです。このバッチファイルを実行するタスクを作成しましょう。
下のリスト欄にサンプルを掲載しておきました。記述したら、「gradle javaVer」と実行してみて下さい。以下のようにバージョンが出力されます。
インストールしてあるJDKによって表示は変わるでしょうが、だいたいこんな出力がされます。ここでは、以下のように実行コマンドの設定をしています。
これにより、cmd /c java.batというコマンドが実行されます。これにより、java.batに記述されていたjava.exe -versionが実行され、Javaのバージョン情報が出力された、というわけです。
Execクラスは、コマンドラインからコマンドを実行する働きをします。これにもいくつかメソッドが用意されており、コマンド実行に関する設定を行うようになっています。
commandLine 《実行するコマンド》,《引数》……実行するコマンドの内容を指定するものです。第1引数にコマンドを記述し、それ以降にオプションなどを引数として用意していきます。
workingDir 《テキスト》これは既に説明しましたね。ワーキングディレクトリを指定するためのものです。
args 《Iterator》
args 《値1, 値2, ……》
これも既に登場しました。引数として渡す情報を指定するものですね。これはIteratorとしてまとめて用意することもできますし、不定引数として必要な値を個別に引数指定することもできます。
とりあえず、これだけ知っていればコマンドの実行は十分できるでしょう。では、実際に簡単な例を挙げましょう。
まず、実行するコマンドとして、簡単なバッチファイルを作成しておきましょう。ここではWindowsで実行する前提で説明をします。プロジェクトのフォルダ内に、「java.bat」という名前でファイルを用意しましょう。そして以下のように記述しておきます。
java.exe -version
見ればわかるように、Javaのバージョンを出力させるコマンドを実行しているだけです。このバッチファイルを実行するタスクを作成しましょう。
下のリスト欄にサンプルを掲載しておきました。記述したら、「gradle javaVer」と実行してみて下さい。以下のようにバージョンが出力されます。
> Task :javaVer
***** Java Version *****
C:\Users\○○\Desktop\GradleApp>java.exe -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)
インストールしてあるJDKによって表示は変わるでしょうが、だいたいこんな出力がされます。ここでは、以下のように実行コマンドの設定をしています。
workingDir '.'
commandLine 'cmd'
args '/c', 'java.bat'
これにより、cmd /c java.batというコマンドが実行されます。これにより、java.batに記述されていたjava.exe -versionが実行され、Javaのバージョン情報が出力された、というわけです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
task javaVer(type:Exec) { group 'libro' description 'print java version.' workingDir '.' commandLine 'cmd' args '/c', 'java.bat' doFirst { println() println('***** Java Version *****') } }
※関連コンテンツ