概要
- gradle run で実行する Java アプリケーションのコマンドライン引数は --args で指定することができる (Gradle 4.9 移行から可能)
- たとえば gradle run --args="aaa bbb ccc" のように指定することで Java のメインクラスの main メソッドに文字列の配列のパラメータをセットできる
- Gradle 4.9 より前では run タスクが実行される前処理を build.gradle に記述することで対処していた
記述例
aaa bbb ccc の3つの引数を指定する例。
$ gradle run --args="aaa bbb ccc"
公式情報
Since Gradle 4.9, the command line arguments can be passed with --args. For example, if you want to launch the application with command line arguments foo --bar, you can use gradle run --args="foo --bar" (see JavaExec.setArgsString(java.lang.String).
動作確認
OpenJDK 11.0.2 と Gradle 5.6.2 で動作を確認済み。
build.gradle と実行用の App.java を用意する。
$ tree
.
├── build.gradle
└── src
└── main
└── java
└── com
└── example
└── App.java
build.gradle ファイル。
build.gradle
plugins {
id 'java'
id 'application'
}
repositories {
mavenCentral()
jcenter()
}
application {
mainClassName = 'com.example.App'
}
App.java ファイル。
package com.example;
public class App {
public static void main(String[] args) {
System.out.println("args.length=" + args.length);
for(String arg: args) {
System.out.println(arg);
}
}
}
引数なしで gradle run を実行する。
$ gradle run
> Task :run
args.length=0
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed
引数ありで gradle run を実行する。
$ gradle run --args="aaa bbb ccc"
> Task :run
args.length=3
aaa
bbb
ccc
BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date
Gradle 4.9 より前の対処方法
build.gradle に run タスク実行時の処理を追加する。
build.gradle
run {
// args プロパティが存在する場合は run タスクの args に渡す
if (project.hasProperty('args')) {
// 半角空白文字で分割して渡す
args(project.args.split('\\s+'))
}
}
gradle run 実行時に args プロパティを指定すると、Java アプリケーションの引数として渡される。
$ gradle run -Pargs="aaa bbb ccc"
> Task :run
args.length=3
aaa
bbb
ccc
BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date