【问题标题】:Simultaneous Java + Clojure development: Cider without Leiningen?同时进行 Java + Clojure 开发:没有 Leiningen 的苹果酒?
【发布时间】:2014-11-13 19:55:40
【问题描述】:

场景如下:我正在为一个需要 Java 解决方案的类开发项目:特别是,关键函数接收 AI 问题并返回答案字符串。我的预期方法是接收问题,然后将其发送到解决问题的 Clojure 函数,并将解决方案字符串返回给关键函数,该函数又提交它。

我的问题是工作流程之一。作为一个狂热的 emacs 用户(虽然是 Clojure 的新手),我想获得使用 Cider 的好处。但是,由于该项目的 Clojure 和 Java 部分都在开发中,因此在 Leiningen 开始一个新项目似乎并不可行或没有必要。目前我已经在 J​​ava 中构建了一个类,该类在调用时向 Clojure 处理 AI 问题,然后我从命令行(非 Cider)启动一个 REPL 并开始处理它,将进度保存在 .clj .一旦我以这种方式解决了 AI 求解器,我计划让自己摆脱自定义问题经销商类(在最终提交中无效),并简单地将问题从关键 Java 函数传递到主要 Clojure 函数并获取答案字符串.

我的最终提交文件必须包含:KeyFunction.java

我的最终提交文件还可以包括:myClojureFile(JAR 或其他 Java 可调用格式)

那么,就最终提交而言,当我的“项目”真的是 Java 时,我如何才能在获得 Cider 的好处(其说明总是包括 Leiningen 项目)的同时解决这个问题?

【问题讨论】:

    标签: java clojure project-management leiningen cider


    【解决方案1】:

    您可以运行clojure.tools.nrepl 提供的nrepl 服务器并通过cider 连接到此服务器。您还需要使用您的 cider 版本所期望的任何 nrepl 中间件。由于您没有使用lein,因此您需要通过maven 配置依赖项或在本地安装它及其所有依赖项(以及您的cider 版本所期望的中间件)。

    但到目前为止,更好的解决方案是只使用leiningen,这样可以简化此设置。

    leinengen 项目可以同时包含 Clojure 和 Java 代码。正如tutorial 中提到的,lein 将编译 Java 代码,然后编译 Clojure 代码。

    如果您要在 :java-source-paths 或 :aot 中列出的 Clojure 命名空间中编译任何 Java,它们将始终在 Leiningen 通过任何 run、repl 等调用运行任何其他代码之前进行编译。

    【讨论】:

    • 因此,鉴于我的客户将拥有一个 Java 程序,他们会将我的东西插入其中,所以我将只提交我上面提到的内容(并且只提交我提到的内容),这将如何形成你提到的这个方法?我最终将如何将其归结为 .java 和 .jar?
    • lein uberjarlein jar 命令都创建一个 jar 文件,其中包含任何 .clj 或 .java 文件、您定义的任何资源、已编译的 .class 文件以及(对于 uberjar)所有必需的第三方罐子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    相关资源
    最近更新 更多