LoginSignup
10
8

More than 3 years have passed since last update.

gradle run で実行する Java の引数は --args で指定できる (Gradle 4.9 から)

Last updated at Posted at 2019-10-19

概要

  • 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"

公式情報

The Application Plugin

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

参考資料

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8