具有 Java 和 gradle 的控制台应用程序

2022-08-31 16:20:51

我正在用Java和gradle编写一个控制台应用程序。我正在使用应用程序插件,并在 中正确配置了必填字段。build.gradle

在我的主类中,我与.问题是:当我在项目目录中运行时,读取器不会等待我的控制台输入。 而是在第一次调用时返回。这种行为对于我正在做的事情来说是不可取的。BufferedReaderSystem.ingradle runBufferedReader#readLinenull

解决方案是什么?是否有单独的控制台应用程序插件用于gradle,或者我是否需要以某种方式调整插件以满足我的需求?application


答案 1

默认情况下,Gradle 构建的 system.in 不与运行 (JavaExec) 任务 system.in 连接。您可以执行以下操作:

build.gradle (Groovy syntax):

run {
    standardInput = System.in
}

build.gradle.kts (Kotlin DSL syntax):

tasks.named<JavaExec>("run") {
    standardInput = System.`in`
}

答案 2

如上所述,添加

run {
   standardInput = System.in
}

并运行:

gradle console:run -q --console=plain

哪里:

  • -q在“安静”模式下运行任务(以避免> Building > :run)
  • --console=plain删除执行状态:<=-> 80% EXECUTING [TIME]

资料来源:https://docs.gradle.org/current/userguide/gradle_command_line.html


推荐