Java and gradle。 application
plugin を使用してコンソールアプリケーションを作成しています。必要なフィールドがbuild.gradle
で正しく設定されています。
私のメインクラスでは、BufferedReader
をSystem.in
にリンクしています。ここに問題があります:プロジェクトディレクトリでgradle run
を実行すると、リーダーはコンソール入力を待ちません。代わりに、BufferedReader#readLine
は、最初の呼び出しでnull
を返します。この動作は、私が何をしているのかには望ましくありません。
解決策は何ですか? Gradle用の別のコンソールアプリケーションプラグインはありますか、それとも自分のニーズに合わせてapplication
プラグインを調整する必要がありますか?
デフォルトでは、gradleビルドのsystem.inはrun(JavaExec)タスクのsystem.inと関連付けられていません。次のことができます。
run{
standardInput = System.in
}
上記のように、
run {
standardInput = System.in
}
そして実行します:
gradle console:run -q --console=plain
どこ:
-q
は "quiet"モードでタスクを実行します(> Building > :run
)--console=plain
実行ステータスを削除します:<=-> 80% EXECUTING [TIME]
出典: https://docs.gradle.org/current/userguide/gradle_command_line.html