在Gradle/IDEA中无法正常使用readln/readLine标准输入的解决方法


摘译自: https://stackoverflow.com/questions/13172137/console-application-with-java-and-gradle

问题

在Gradle构建的控制台程序中,标准输入readLine总是返回null

原因

Gradle的标准输入默认并不与系统标准输入绑定,需手动设置

解决方法

在build.gradle.kts中添加

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

如果需要更干净的输出,可以用

gradle console:run -q --console=plain

Groovy DSL语言构建脚本的解决方法

虽然个人只关心Kotlin语言,但在一些Android默认工程中默认构建脚本是Groovy DSL,原贴中也有Groovy构建脚本的解决方法:
在build.gradle中添加

run {
    standardInput = System.in
}

在使用上述方法后,IntelliJ IDEA的终端仍不能处理输入,可直接运行.kt文件(右键)解决