Console application with Java and gradle

By default, the system.in of your Gradle build is not wired up with the system.in of the run (JavaExec) task. You can do the following:

build.gradle (Groovy syntax):

run {
    standardInput = System.in
}

build.gradle.kts (Kotlin DSL syntax):

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

For build.gradle.kts:

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

As stated above, add

run {
   standardInput = System.in
}

And run:

gradle console:run -q --console=plain

where:

  • -q runs task in "quiet" mode (to avoid having > Building > :run)
  • --console=plain drops execution status: <=-> 80% EXECUTING [TIME]

Source: https://docs.gradle.org/current/userguide/gradle_command_line.html