Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Console application with Java and gradle

I am writing a console application with Java and gradle. I am using the application plugin and have the required fields correctly configured in build.gradle.

In my main class I have BufferedReader linked with System.in. Here's the problem: When I run gradle run in project directory, the reader does not wait for my console input. BufferedReader#readLine instead returns null on the very first call. This behavior is not desirable for what am I doing.

What is the solution? Is there a separate console application plugin for gradle or do I need to tweak application plugin somehow to suit my needs?

like image 873
missingfaktor Avatar asked Nov 01 '12 06:11

missingfaktor


People also ask

How do I run a Gradle project in Terminal?

To run a Gradle command, open a command window on the project folder and enter the Gradle command. Gradle commands look like this: On Windows: gradlew <task1> <task2> … ​ e.g. gradlew clean allTests.

What is Gradle console?

Gradle provides a command line to execute build script. It can execute more than one task at a time. This chapter explains how to execute multiple tasks using different options.


1 Answers

Per 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 syntax) tasks.named<JavaExec>("run") {     standardInput = System.`in` } 
like image 186
Rene Groeschke Avatar answered Oct 02 '22 01:10

Rene Groeschke