Gradle 中的 Scala REPL
Scala REPL in Gradle
目前 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 引导 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 中创建别名很有意义。
目前 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'
}
感谢
注意 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 中创建别名很有意义。