Как запустить интерактивное Java-приложение с Gradle - PullRequest
0 голосов
/ 03 марта 2019

Я хочу написать небольшую задачу, которая запускает мне это маленькое приложение:

import java.lang.IllegalArgumentException

class TestApp{
    companion object {
        @JvmStatic
        fun main(args:Array<String>){
            val a = try{
                args[0].toInt()
            }catch (e:Exception) {throw argException}

            val b = try{
                args[1].toInt()
            }catch (e:Exception) {throw argException}

            print("$a + $b = ")
            val answer = readLine()!!.toInt()

            println(if(a+b == answer)"CORRECT" else "WRONG!")
        }

        private val argException:IllegalArgumentException by lazy { IllegalArgumentException("expecting two integers as args") }
    }
}

Если я запускаю приложение, скажем, с Intellij, приложение остановится на readline() и будет ожидать ввода пользователя.

Однако, если я добавлю для него задачу gradle

task runTestApp(type:JavaExec){
    main = "${javaMainTestApp}"
    classpath = sourceSets.main.runtimeClasspath
}

и запустим, скажем,

gradle runTestApp --args="2 4"

Тогда я получу

2 + 4 = Exception in thread "main" kotlin.KotlinNullPointerException
        at [...].app.TestApp$Companion.main(TestApp.kt:19)
        at [...].app.TestApp.main(TestApp.kt)

Почему это?И что еще более важно, как заставить выполнение ждать ввода пользователя?

ОБНОВЛЕНИЕ

Спасибо @tim_yates:

добавление standardInput = System.in заставляет приложение принимать пользовательский ввод

, но приводит к выводу вроде:

3 + 5 =
<<==========---> 80% EXECUTING [20s]
> :runTestApp
8

, где 8 - ввод пользователя.

, следовательно, когдаприложение завершает, вывод читает

3 + 5 =
<<======CORRECT> 80% EXECUTING [22s]

1 Ответ

0 голосов
/ 04 марта 2019

Может быть, вы могли бы использовать плагин приложения и сделать gradle run.Или вы можете использовать плагин и запустить скрипт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...