Scala REPL in Gradle

Dom*_*kis 11 scala classpath gradle read-eval-print-loop

目前,Gradle的scala集成不提供REPL功能.如何使用适当的类路径从Gradle以符合人体工程学的方式运行Scala REPL?

Dom*_*kis 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'
}
Run Code Online (Sandbox Code Playgroud)

感谢这个答案解释如何使用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中创建别名是有意义的.