从另一种JVM语言动态链接到Clojure运行时时,处理Clojure项目依赖项?

时间:2017-12-01 04:59:05

标签: scala clojure jvm sbt leiningen

我有两个项目:

  1. 基于lein的Clojure项目,具有自己的一组依赖项
  2. 基于sbt的Scala项目,具有自己的一组依赖项
  3. 最初,Clojure项目通过HTTP充当微服务,为主要的Scala流程提供服务。由于这种设置,我可以在Clojure项目中使用基于REPL的工作流,并且能够在开发期间动态更新服务,而无需重新启动Scala项目。这是一个很好的,高效的开发设置。

    由于性能问题,我们需要删除微服务的service-through-HTTP +序列化/反序列化开销,因此Clojure项目的主要功能现在包含在(gen-class ..)函数中,该函数编译将服务边界划分为类Engine。然后将Clojure项目编译为uberjar并复制到Scala项目目录系统中,项目将自动导入到类路径中。

    虽然该系统具有高性能,但开发经验严重恶化,因为系统必须重新编译,并且在更改之间完全重新启动。

    我想重新捕获基于REPL的工作流程,但我不知道如何处理基于Clojure lein的项目的依赖关系。

    我知道我可以从Scala导入Clojure运行时,因为它是一种JVM语言,我只需要使用大致相同的Java调用。但是,我不确定如何正确处理Clojure代码中的依赖项。我是否需要从sbt方面导入它们?

    最终,我的问题可以概括为: 给定两个单独的项目,一个sbt - 基于(Scala),一个基于lein(Clojure),如何动态链接来自Scala的Clojure项目,包括Clojure的依赖项项目,以这种方式维护系统的Clojure部分的基于REPL的开发环境,以防止整个堆栈应用程序重启?

0 个答案:

没有答案