やりたいこと
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 の本懐なのでしょうね。
次のページが参考になりました!ありがとう存じます!
以上です。