【问题标题】:Scala REPL in GradleGradle 中的 Scala REPL
【发布时间】:2016-02-25 15:51:20
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    最小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 中创建别名是有意义的。

    【讨论】:

    • 它可以工作,但我无法通过向上键转到上一个命令。你知道怎么解决吗?
    • 我现在没有使用 Gradle,但是你可以尝试使用 rlwrap 和 --quiet 而不是 --console plain
    猜你喜欢
    • 2018-11-01
    • 1970-01-01
    • 2012-02-15
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多