我有一个Gradle项目,由几个子项目组成。我刚刚创建了一个新项目,以添加对交互式Groovy shell的支持,我希望可以运行:
gradle console
或者
gradle console:run
所以我的新的
console
模块的build.gradle文件如下:apply plugin: 'groovy'
apply plugin:'application'
mainClassName = 'org.codehaus.groovy.tools.shell.Main'
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.2.2'
compile 'org.fusesource.jansi:jansi:1.11'
compile 'commons-cli:commons-cli:1.2'
compile 'jline:jline:2.11'
compile project(':my-module')
}
task(console, dependsOn: 'classes', type: JavaExec) {
main = 'org.codehaus.groovy.tools.shell.Main'
classpath = sourceSets.main.runtimeClasspath
}
然而,当我运行 gradle :console:run
或 gradle console
命令时,会出现以下结果:
:console:run
Groovy Shell (2.2.2, JVM: 1.6.0_45)
Type 'help' or '\h' for help.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
groovy:000>
BUILD SUCCESSFUL
Total time: 4.529 secs
giovanni@mylaptop:~/Projects/my-project$
因此,交互式 shell 似乎启动了,但立即退出。我做错了什么吗?
编辑: 在 build.gradle 文件中添加了以下内容:
run.standardInput = System.in
现在标准输入从输入流中读取(感谢评论)。
然而,Gradle似乎在这里卡住了:
Groovy Shell (2.2.2, JVM: 1.6.0_45)
Type 'help' or '\h' for help.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
groovy:000>
> Building 88% > :console:run
无论输入什么都不能被接受。甚至这样也会导致同样的结果:
gradle --no-daemon console:run
更新于2018年:
Dylons所提供的答案似乎已经不再适用,./gradlew console
会立即退出:
$ ./gradlew console
配置项目: Task.leftShift(Closure)方法已被弃用,计划在Gradle 5.0中删除。请改用Task.doLast(Action)。 在build_8qb2gvs00xed46ejq1p63fo92.run(/home/jhe052/eclipse-workspace/QuinCe/build.gradle:118)处。 (使用--stacktrace运行以获取此弃用警告的完整堆栈跟踪。)
BUILD SUCCESSFUL in 3s 3个可执行任务:1个已执行,2个最新的
使用doLast替换leftShift(<<)可以消除已弃用的消息,但结果相同。版本信息:
$ ./gradlew --version
Gradle 4.4.1
构建时间:2017年12月20日15:45:23 UTC 版本号:10ed9dc355dc39f6307cc98fbd8cea314bdd381c
Groovy版本号:2.4.12 Ant版本号:Apache Ant(TM) 1.9.9,编译于2017年2月2日 JVM版本号:1.8.0_151 (Oracle Corporation 25.151-b12) 操作系统:Linux 4.13.0-32-generic amd64