【问题标题】:How do you distribute a Clojure program to non-programmers?如何将 Clojure 程序分发给非程序员?
【发布时间】:2011-02-03 16:10:12
【问题描述】:

我是 Clojure 的新手,但我正在学习它。我想知道将 Clojure 程序打包和分发给不一定是程序员的最终用户的最佳方式。我知道在 Ruby 中,您可以告诉用户使用 gem install [program name] 下载程序,然后运行运行程序的命令。 Clojure 程序的等价物是什么?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    我使用Leiningen 它有一个uberjar 命令来制作自包含的可执行jar 文件,您的用户只需双击即可。见:http://zef.me/2470/building-clojure-projects-with-leiningen

    【讨论】:

    • 虽然 lein uberjar 非常适合小项目,但它不适用于大型项目,尤其是在包含其他 3rd 方 Java 库的情况下。罐子不能(必然)安全地扩展、组合和重新震荡。在路径冲突的情况下排序是任意的,清单可能很棘手(或不可能)正确合并等。无论如何,从 uberjar 开始,但您最终可能会摆脱它。
    • 根据您的用户的技术水平,lein-tar 也可能是合适的:github.com/technomancy/lein-tar 尽管如果它适用于您的项目,没有什么比 uberjar 更方便了。
    【解决方案2】:

    如果您要分发库,Clojars 非常棒,但我不确定这是否是最终用户的最佳选择。

    如果您已经在使用 Maven,我认为最好的选择是创建一个包含所有必需类的 uberjar。如果您想让它对最终用户更加友好,您可以使用 IzPack 之类的东西从这个 jar 中创建一个安装程序。请记住,Clojure 程序是 Java 程序,因此 Java 的所有分发选项也适用于 Clojure。

    【讨论】:

      【解决方案3】:

      lein uberjar 适用于主要是 Clojure 的小型应用程序,但在使用许多 Java 库时无法扩展,包括必要的许可证和其他类似的东西。如果您使用 Maven Clojure 插件,您可以利用庞大而可怕的 Maven 程序集插件来构建您可能需要的最终结构。

      或者你可以编写一个 Leiningen 插件来做类似的事情。我不确定这样的事情是否存在。

      【讨论】:

        【解决方案4】:

        Clojars (http://clojars.org/) 是您可以找到的更大的 Clojure 库存储库。

        它与 Leiningen 项目或任何其他基于 Maven 的项目管理工具完美配合。

        【讨论】:

        • Clojars 不提供问题中要求的最终用户机制的安装/分发。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-08
        • 1970-01-01
        相关资源
        最近更新 更多