Takahiro Octopress Blog

-1から始める情弱プログラミング

Spring BootでSystem.inにハマったメモ

Spring BootをGradleでビルドしてハマったメモ

今日は超絶ハマって苦しんだ超初歩についてメモ書きです。
Spring Bootに関する情報はあまり多くはないのですが、
さらに困ったことにほとんどの書籍やネット情報ではMavenでビルドしているのでGradleに関する情報が乏しくてハマりました…。

Javaでキーボード入力のために、
Scanner scanner = new Scanner(System.in);を記述することがあります。

これをメインファイルに記述した状態でgradle bootRunコマンドを実行しても、
しれっと処理が流れてしまいました…。
「なぜだ〜〜〜」と格闘すること数時間!?

解決方法がわかりました。下記をbuild.gradleに追加します。

1
2
3
4
// build.gradle
bootRun {
  standardInput = System.in
}

これはbootRunタスクを実行したときに、
System.inをInput処理として判別するように定義しています。
もう一度gradle bootRunを実行してみると処理が途中でStopしてユーザ入力を受け付けるようになりました。

いや〜ハマった…。
本日は完全なるメモ書きでした。

Comments