Gradle 中的 Scala REPL

标签 scala gradle classpath read-eval-print-loop

目前 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/

    相关文章:

    android - 当它具有也是 aar 库的依赖项时,如何为 android 库生成 javadoc?

    java - j2me导入外部jar : what classpath?

    java - Derby , java : Trouble with "CREATE_TYPE" statement

    java - IntelliJ IDEA:用于String,System和其他Java类的 “cannot resolve symbol”

    java - 仅在 out 文件夹和 gradle 运行中无法识别资源

    android - 为什么 Android Studio 2.0 不支持 Perforce?

    scala - 有哪些 Scala Web 框架可用?

    scala - 是否有任何支持 OAuth 2.0 的 Scala OAuth 库?

    Scalatest:应该是带有额外描述的匹配器吗?

    scala - scala 中的 RESTful http DELETE 方法(玩 2.0)