2015-04-22 3 views
1

Я вызываю мой основной класс, как это из файла градиента, и когда я пытаюсь прочитать пароль с помощью System.console, я получаю NPE.System.console null в задаче java gradle

task (getRepositoryInfo, dependsOn: 'classes', type: JavaExec) { 
standardInput = System.in 
standardOutput = System.out 
environment('TERM', 'dumb') 
main = 'com.devpt.explorer.Demo' 
mainClassName = 'com.devpt.explorer.Demo' 
classpath = sourceSets.main.runtimeClasspath 
def stageName = project.hasProperty("STAGE_NAME")? project.getProperty("STAGE_NAME"): "stageXXXX" 
def operations = project.hasProperty("OPERATIONS")? project.getProperty("OPERATIONS"): "ALL" 
def buildId = project.hasProperty("BUILD_ID")? project.getProperty("BUILD_ID"): "DUMMY" 
args operations 
args stageName 
args buildId 
} 

System.console подходит как null в основном классе java. Но я могу прочитать пароль непосредственно из файла градации. Что я делаю неправильно?

Пример кода: https://github.com/ajayboseac/GradleExample

Gradle версия 2.2 Java Версия: 1.7.0_13

+0

Не могли бы вы представить примерный пример, который воспроизводит проблему? – Opal

+0

добавил ссылку на git hub – Ajay

+0

Как вы запускаете свою сборку? Команда оболочки или IDE? Я [использовал для работы с System.console() из задачи внутри плагина] (https://github.com/madhead/gradle-backup-plugin/blob/master/src/main/java/by/dev/madhead /gbp/tasks/gdrive/ObtainGoogleDriveTokensTask.java#L51) (или из build src dir), и он работает нормально. – madhead

ответ

1

я отправил вопрос в Gradle и получил подтверждение, что консоль, как ожидается, будет нулевым

ссылка: https://discuss.gradle.org/t/system-console-null-in-a-gradle-java-task/9274

цитата из ответа:

Развернутый процесс не подключен к консоли. Это возможно только достичь с помощью JDK Process Builder API с Java 7. Вот статьи я нашел на эту тему после быстрого поиска: http://tamanmohamed.blogspot.com.au/2012/06/jdk7-processbuilder-and-how-redirecting.html2

Gradle пока не поддерживает INHERIT потоков для разветвленных процессов через задачи JavaExec и Exec.

Смежные вопросы