web-dev-qa-db-ja.com

Javaおよびgradleを使用したコンソールアプリケーション

Java and gradle。 application plugin を使用してコンソールアプリケーションを作成しています。必要なフィールドがbuild.gradleで正しく設定されています。

私のメインクラスでは、BufferedReaderSystem.inにリンクしています。ここに問題があります:プロジェクトディレクトリでgradle runを実行すると、リーダーはコンソール入力を待ちません。代わりに、BufferedReader#readLineは、最初の呼び出しでnullを返します。この動作は、私が何をしているのかには望ましくありません。

解決策は何ですか? Gradle用の別のコンソールアプリケーションプラグインはありますか、それとも自分のニーズに合わせてapplicationプラグインを調整する必要がありますか?

41
missingfaktor

デフォルトでは、gradleビルドのsystem.inはrun(JavaExec)タスクのsystem.inと関連付けられていません。次のことができます。

run{
    standardInput = System.in
}
70
Rene Groeschke

上記のように、

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

16
loeschg