カテゴリー
コンピューター

gradle run 後、入力を受け付けるための build.gradle 設定

やりたいこと

  • gradle run してプログラムを実行後に、コマンドラインからの入力を受け付けるようにしたい

具体的には、次のような動きをさせることができました♪

oki2a24:java-abstract-factory-pattern-game-sample[master]$ gradle run

> Task :run 
Welcome to the guessing game, my secret number is between 1 and 100
Enter a number between 1 and 100
<<<=========----> 75% EXECUTING [5s]
Enter a number between 1 and 50
<<<=========----> 75% EXECUTING [9s]
Enter a number between 1 and 25
<<<=========----> 75% EXECUTING [14s]
Enter a number between 12 and 25
<<<=========----> 75% EXECUTING [25s]
Enter a number between 18 and 25
<=<=========----> 75% EXECUTING [31s]
Correct


BUILD SUCCESSFUL in 33s
2 actionable tasks: 1 executed, 1 up-to-date
oki2a24:java-abstract-factory-pattern-game-sample[master]$ 

Enter a number between 1 and 100

の後に、入力待ちにして、何かをキーボードから入力し、Enter を押したらプログラムを続行する、そんな動きです。

今回は、そのための設定をメモします。

環境

------------------------------------------------------------
Gradle 4.6
------------------------------------------------------------

Build time:   2018-02-28 13:36:36 UTC
Revision:     8fa6ce7945b640e6168488e4417f9bb96e4ab46c

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.9 compiled on February 2 2017
JVM:          9.0.4.1 (Azul Systems, Inc. 9.0.4.1+11)
OS:           Mac OS X 10.12.6 x86_64

build.gradle の設定

次を、記入すれば OK でした。

run {
    standardInput = System.in
}

ファイル全体の例です。

Java プログラムでの入力待ちの指定方法

Java コードでは次のように書きます。

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

利用している前後を含むソースファイルの例です。

gradle run 実行の方法でわからなかったこと

gradle run -q とオプションをつければビルド状況が出力されない、、、と参考ページにありましたが、これは上手く行きませんでした><。指定の仕方が良くなかったのかもしれません。

それで、結局 gradle run./gradlew run で実行し、本ページ最初のような出力となりました。

おわりに

Gradle はパッケージマネージメントできますけれども、意外とプログラム実行の単純な応用が難しいと感じます。

お気軽な Java 実行は、おまけで、しっかりとビルドして Jar 等をしっかりとつくり、デプロイすることこそ、きっと Gradle の本懐なのでしょうね。

次のページが参考になりました!ありがとう存じます!

以上です。

コメントを残す