Gradle java任务

时间:2015-04-22 12:46:26

标签: gradle

我从gradle文件中调用这样的主类,当我尝试使用System.console读取密码时,我得到了一个N​​PE。

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在java主类中为null。但我可以直接从gradle文件中读取密码。 我做错了什么?

代码示例:https://github.com/ajayboseac/GradleExample

gradle 2.2版 java版本:1.7.0_13

1 个答案:

答案 0 :(得分:1)

我已经在gradle中发布了这个问题并得到了一个确认控制台应该为空的确认

link:https://discuss.gradle.org/t/system-console-null-in-a-gradle-java-task/9274

引用答案:

  

分叉的进程没有连接到控制台。这是唯一可能的   通过在Java 7中使用JDK流程构建器API来实现。这里是一个   我在快速搜索后找到了关于该主题的文章:   http://tamanmohamed.blogspot.com.au/2012/06/jdk7-processbuilder-and-how-redirecting.html2

     

Gradle还没有支持分叉进程的继承流   它的JavaExec和Exec任务。