目前 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'
}
归功于 this answer用于解释如何使用标准输入引导标准输入并让 REPL 使用正确的类路径和参数。
请注意
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,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35632085/