【发布时间】:2016-02-25 15:51:20
【问题描述】:
目前 Gradle 的 scala 集成不提供 REPL 功能。如何使用适当的类路径从 Gradle 以符合人体工程学的方式运行 Scala REPL?
【问题讨论】:
标签: scala gradle classpath read-eval-print-loop
目前 Gradle 的 scala 集成不提供 REPL 功能。如何使用适当的类路径从 Gradle 以符合人体工程学的方式运行 Scala REPL?
【问题讨论】:
标签: scala gradle classpath read-eval-print-loop
最小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 解释如何使用标准输入来引导标准输入,并让 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。