Gradle中的Scala REPL

13

目前Gradle的scala集成不提供REPL功能。如何从Gradle中舒适地运行一个Scala REPL并使用适当的类路径?

1个回答

16

最简 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中创建别名很有意义。


1
它能够工作,但我无法使用向上键返回到先前的命令。也许你知道如何修复它? - Konstantin Milyutin
我目前没有使用Gradle,但是从我的经验来看,你可以尝试使用rlwrap并使用--quiet代替--console plain - Dominykas Mostauskis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接