目前Gradle的scala集成不提供REPL功能。如何从Gradle中舒适地运行一个Scala REPL并使用适当的类路径?
目前Gradle的scala集成不提供REPL功能。如何从Gradle中舒适地运行一个Scala REPL并使用适当的类路径?
最简 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'
}
感谢此答案解释了如何使用standardInput来指定标准输入并使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中创建别名很有意义。
--quiet
代替--console plain
。 - Dominykas Mostauskis