Я пытаюсь выполнить свой класс Kotlin с помощью команды:
./gradlew -q run < src/main/kotlin/samples/input.txt
Вот мой класс HelloWorld.kt:
package samples
fun main(args: Array<String>) {
println("Hello, world!")
val lineRead = readLine()
println(lineRead)
}
Вот мой build.gradle.kts:
plugins {
kotlin("jvm")
application
}
application {
mainClassName = "samples.HelloWorldKt"
}
dependencies {
compile(kotlin("stdlib"))
}
repositories {
jcenter()
}
Код выполняется, но данные, содержащиеся в файле input.txt, не отображаются. Вот что я получаю:
Hello, world!
null
Я хочу иметь возможность выполнить приведенную выше команду gradlew, а поток input.txt перенаправить на stdio. Я могу легко сделать это на C++. Как только я скомпилирую свой файл .cpp, я могу запустить:
./my_code < input.txt
и он выполняется, как ожидалось.
Как я могу добиться того же самого с Kotlin и Gradle?
Обновление: на основе этот ответ, я пытался добавить это в build.gradle.kts, но это недопустимый синтаксис:
run { standardInput = System.in }
в свой build.gradle.kts? То же предложение здесь: discuss.gradle.org/t/ - person charles-allen   schedule 18.08.2017build.gradle.kts
, а не толькоbuild.gradle
? - person Thufir   schedule 05.11.2017