【问题标题】:How to add libraries in clojure?如何在clojure中添加库?
【发布时间】:2015-11-19 18:41:56
【问题描述】:

在我看到的任何地方,都建议我在project.clj 中添加:dependencies 并运行lein deps。这些在哪里下载?我的CLASSPATH 是什么?如何将我自己的 JAR 添加到我的 clojure 项目中?

虽然答案是

使用 leiningen 的 maven 本地存储库中的依赖项

有点解决了我的需求,我没有将它标记为重复,因为我所问的要简单得多(作为初学者,对 Java 没有太多了解 Maven 的经验)。我仍然很难理解 clojure 的结束和 leiningen 的开始。

我一直在寻找一种添加库的方法,就像我们在大多数其他语言中所做的那样(例如,将 JAR 复制到项目目录并导入代码)。

【问题讨论】:

  • 您的类路径由 Leiningen 动态设置。如果您尝试手动设置,那么您做错了。
  • (文件的去向取决于您的 Maven 配置,但默认情况下它们将位于 ~/.m2/repo 下)。
  • ...您也不应该为lein deps 操心。每当您运行任何lein compilelein repllein uberjar 或其他目标时,都会为您提取所有适当和必要的内容。
  • ...至于如何添加你自己的 jars,普遍接受的方法是创建你自己的Maven仓库。这在其他地方都有详细记录,包括此处之前的问答。
  • 也许这是 stackoverflow.com/questions/8738664/… 的副本?

标签: clojure


【解决方案1】:

这是一个很好的问题,因为它根本不清楚。 Leiningen 通常是一个黑洞,如果出现问题,通常很难调试。

我最近不得不编写一些手动脚本,而 leiningen 确实可以帮助您找出这些东西。

这些是在哪里下载的?

目录位于$HOME/.m2。这是 Maven 的:http://maven.apache.org/settings.html

我的类路径是什么?

类路径的设置取决于您的 :dependencies 以及您的 :source-paths:resource-paths 向量。

你可以像这样找到你的类路径:

lein classpath

这将根据您的配置打印一个巨大的列表。

你可以——例如——然后运行一个脚本:

    java -cp cljs-1.7.xx.jar:scripts:$(lein with-profile +dev-cljs classpath) clojure.main scripts/cljs-build.clj dev

它可以访问您的所有项目依赖项并正确加载它们。

虽然您可以使用lein run 来实现类似的效果:

lein with-profile +dev-cljs run -m clojure.main scripts/cljs-build.clj dev

如何添加自己的 JAR?

见:leiningen - how to add dependencies for local jars?

【讨论】:

    【解决方案2】:

    从库的项目目录中运行 lein install。 在客户的project.clj 中向:dependencies 添加一个条目。 确保库名称/版本及其引用匹配(例如[mylib "0.0.1-SNAPSHOT"])。 希望这会有所帮助,暂时忘记 jar loc 和 cp。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多