Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 如何为Leiningen配置专有依赖项?_Clojure_Leiningen_Clojure Java Interop - Fatal编程技术网

Clojure 如何为Leiningen配置专有依赖项?

Clojure 如何为Leiningen配置专有依赖项?,clojure,leiningen,clojure-java-interop,Clojure,Leiningen,Clojure Java Interop,我们正在进行一个具有Clojure Java互操作的项目。此时,我们有一个类,它具有各种依赖项,我们将这些依赖项放入Eclipse中的用户库中进行开发,但在使用Leiningen(2.x)时,这当然没有帮助。我们的大多数依赖项都是专有的,因此它们不在某个存储库中 最简单/正确的方法是什么 我见过,但它似乎过时了 更新:所以我为我的jar创建了一个本地maven存储库,如下所示,并编辑了我的project.clj文件: :dependencies [[...] [us

我们正在进行一个具有Clojure Java互操作的项目。此时,我们有一个类,它具有各种依赖项,我们将这些依赖项放入Eclipse中的用户库中进行开发,但在使用Leiningen(2.x)时,这当然没有帮助。我们的大多数依赖项都是专有的,因此它们不在某个存储库中

最简单/正确的方法是什么

我见过,但它似乎过时了

更新:所以我为我的jar创建了一个本地maven存储库,如下所示,并编辑了我的project.clj文件:

:dependencies [[...]
               [usc "0.1.0"]]
:repositories {"usc" "file://maven_repository"}
maven_存储库位于项目目录下(因此不使用
文件://
)。当我运行“lein deps”时--我得到了以下信息:

Retrieving usc/usc/0.1.0/usc-0.1.0.pom from usc
Could not transfer artifact usc:usc:pom:0.1.0 from/to usc (file://maven_repository): no supported algorithms found
This could be due to a typo in :dependencies or network issues.
Could not resolve dependencies
“找不到支持的算法”是什么意思?如何修复


更新2:找到了答案的最后一点。

将它们作为依赖项添加到您的leiningen项目中。你可以编名字和版本。
然后运行lein deps,当它找不到错误消息时,它会给您一个确切的运行命令,这样您就可以将jar安装到您的本地repo,然后如果您决定使用共享repo,您可以使用相同的过程将依赖项放在那里

YMMV但我发现在处理Polyglot Clojure/Java项目时,最好使用Maven而不是Leiningen

这主要是因为基于Java的工具(Eclipse等)理解Maven项目,但并不真正理解Leiningen项目。随着优秀的逆时针Clojure插件的出现,情况正在慢慢好转,但是对于一个高效的基于IDE的工作流来说,集成仍然不够好


在存储库方面,我建议设置一个私有的共享Maven存储库。如果您计划在团队中管理一组复杂的依赖关系,您迟早会需要它:不妨现在就咬紧牙关完成。

@Arthur的回答很好,但我想我会充实一下,因为它缺少一些细节

  • 永远记住。如果您没有做到让任何需要访问工件的人都能够以标准方式访问工件,那么您就是在请求支持

  • 这是一个很好的去处,可以找到您需要了解的有关部署工件的所有信息。由于您处于多语言环境中,您可能无法让
    lein
    负责部署所有工件,但至少您可以将特定于clojure的JAR安装到S3中,或者如果您愿意,甚至可以进行文件共享。其余的工件必须直接使用Maven或Ant将工件上传到文件服务器或S3上的Maven repo。在我目前的公司,我们正在使用technomancy的优秀到卓越的效果来托管我们的封闭源代码工件,以及托管我们可以开放源代码的任何东西

  • @Arthur所指的是进行
    lein安装
    。所做的只是将当前项目的副本安装到本地
    .m2
    目录中,以便框中的其他项目可以引用它们。除非您已将maven安装配置为使用
    .m2
    文件夹的共享目录(在您的环境中可能不是一个坏主意?),否则这将意味着签出您的项目的任何其他人都无法构建它。如果您想走这条路,您需要将
    $M2_HOME/conf/settings.xml中的
    localRepository
    节点设置为团队其他成员可以访问的共享位置。有关更多信息,请参阅