【问题标题】:Techniques to add a REPL to a Java project将 REPL 添加到 Java 项目的技术
【发布时间】:2012-08-11 03:33:16
【问题描述】:

人们发现哪些技术对使用 Clojure、Scala、JRuby、构建工具等有用,可以用 REPL 改造 Java 项目以快速进行实验?

我经常需要处理普通的旧 Java 项目(POJO 项目?)并且怀念 REPL。 Other SO questions 解决了这个话题,但这些已经有好几年了,而且回复已经过时了。

我将首先提供一些我用来解决此问题的技术。

【问题讨论】:

  • 我在 ~/bin/ 中有一个脚本,其中仅包含 scala -cp target/classes:`mvn dependency:build-classpath | grep "^[^\[]"` 用于无 Scala 插件的 Maven 项目。

标签: java scala groovy clojure read-eval-print-loop


【解决方案1】:

如果项目使用 Maven,gmaven 插件和随附的 mvn groovy:shell 会很有帮助,尽管获得它 configured correctly 可能具有挑战性。

对于那些不使用 Maven 的项目,一种常见的模式是在 lib 文件夹中包含依赖项并手动管理它们。对于这些,我使用了 groovy:

groovysh -cp `echo lib/*.jar | sed 's/ /:/g'`

...或clojure:

java -cp /usr/local/Cellar/clojure/1.3.0/clojure-1.3.0.jar:`echo lib/*.jar | sed 's/ /:/g'` clojure.main

默认的 Clojure 包装器也可以是 enhanced with rlwrap

【讨论】:

    【解决方案2】:

    这个问题主要是关于构建系统以及说服现有构建系统合并 REPL 的潜在复杂性。我喜欢 sbtLeiningen 的一件事是它们都提供开箱即用的 REPL 支持。不幸的是,将现有项目从 Ant/Maven/其他任何一个迁移到其中之一可能并不简单。

    但是如果您现有的项目已经发布到 Maven 或 Ivy 存储库(或者可以很容易地被说服这样做),那么您可以创建一个新的 sbt 或 Leiningen 项目,导入现有项目发布的人工制品,然后您重新做...

    【讨论】:

    • 我也在寻找构建工具之外的解决方案。 sbt、lein 和 mvn 都提供了 REPL,但 ant、gradle 和 make 不提供。
    猜你喜欢
    • 1970-01-01
    • 2014-12-19
    • 2011-02-28
    • 1970-01-01
    • 2012-01-05
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多