目前,Gradle的scala集成不提供REPL功能。如何使用适当的类路径从Gradle运行Scala REPL?
答案 0 :(得分:13)
最小build.gradle
:
apply plugin: 'scala'
repositories{
mavenCentral()
}
dependencies{
compile "org.scala-lang:scala-library:2.11.7"
compile "org.scala-lang:scala-compiler:2.11.7"
}
task repl(type:JavaExec) {
main = "scala.tools.nsc.MainGenericRunner"
classpath = sourceSets.main.runtimeClasspath
standardInput System.in
args '-usejavacp'
}
感谢this answer解释如何使用standardInput指示stdin并让REPL使用带有args的正确类路径。
请注意scala-compiler
库是一个依赖项。找到scala.tools.nsc.MainGenericRunner
的地方。
从控制台运行REPL需要许多选项:
--no-daemon
,如果您使用的是Gradle守护程序。目前,如果从守护进程运行,REPL不会响应击键。
--console plain
。 --quiet
是一种受欢迎但较低级的选择。如果在没有这些选项之一的情况下运行,则REPL的提示会被Gradle的进度报告污染。 --console plain
的优势在于它还会调整readline的行为,因此不需要rlwrap
。
运行REPL的完整命令是gradle repl --console plain --no-daemon
,因此在shell中创建别名是有意义的。