一尘不染

leiningen-如何为本地jar添加依赖项?

java

我想使用Leiningen来构建和开发Clojure项目。有没有办法修改project.clj告诉它从本地目录中选择一些jar?

我有一些专有的jar,无法上传到公共存储库。

另外,可以使用leiningen维护clojure项目的“ lib”目录吗?如果我的一堆clojure项目共享相同的jar,我不想为每个jar保留一个单独的副本。

谢谢


阅读 427

收藏
2020-03-23

共2个答案

一尘不染

你可以将你的私人jar放进lib/去,出于lein swank诸如此类的目的,它们会放在类路径中;这似乎确实使使用依赖项管理工具的意义落空了,尽管如果你实际上不希望管理那些依赖项,则可以将Leiningen视为“开放源代码依赖项管理工具”,并且可能要当心lein clean

随着情况变得更加复杂-涉及到更多的私有jar,它们在发展,并且你需要考虑一些版本信息-Arthur创建私有Maven回购的想法可能更合适。

(HR表示特定于Leiningen的零件截止点…继续下面以获取Clojure领域中一般的构建/依赖管理工具故事的信息,包括一些我认为可能对你有用的链接。)

此外,到目前为止,关于哪一个是Clojure的最佳构建工具这一问题尚未达成共识,并且Leiningen在赢得广泛关注的同时,也在不断地在功能和抛光方面获得收益-特别是,这意味着尚未完成。这是语用书架的“ Programming Clojure”一书的作者Stuart Halloway的话:“我的2c:Leiningen是重要的一步,但仍有许多工作要做。” 有关完整的发布和非常有趣的讨论,请参见Leiningen,Clojure和库:在Clojure空间中构建工具等,我想念的是什么?Clojure Google网上论坛上的主题。许多参与者特别提到需要使本地依赖项不包含在任何存储库中,无论是本地存储库还是其他存储库,并详细说明他们针对此类情况提出的解决方案。也许你可以看到那里是否有什么现在可以解决你的问题/将来在功能集成熟时可以解决?

无论如何,Leiningen实际上可能还没有为某些复杂情况准备好故事。如果你认为这对你的情况是正确的(并且我的意思是在考虑了私有回购想法之后),那么这里有一些指向上述线程中基于maven的替代方法的链接:polyglot maven,clojure-maven-plugin;此博客发布旨在对试图与Clojure一起使用Maven的人有用。我记得,梅克尔·布兰德迈尔(Meikel Brandmeyer)也在Gradle(一种Groovy构建系统)的支持下使用Gradle(一种Groovy构建系统)来容纳名为Clojuresque的Clojure。我从来没有亲自尝试过,因为不了解Groovy的第一件事,但是他声称要与它做一个非常好的建筑行为,我相信这与Maven无关-这本身就是一个优点。对于我们中的一些人。:-)

2020-03-23
一尘不染

只需在project.clj文件中使用:resource-paths。我用它来连接到Siebel服务器。刚刚在我的项目目录中创建了一个资源目录,并在其中复制了jar文件。但是,当然可以使用更通用的目录:

(defproject test-project "0.1.0-SNAPSHOT"
:description "Blah blah blah"
...
:resource-paths ["resources/Siebel.jar" "resources/SiebelJI_enu.jar"])

然后从lein repl我可以创建Siebel Data Bean实例,例如

(def sbl (com.siebel.data.SiebelDataBean.))
(.login sbl "siebelServer" "user" "password")
...

如果你有较新的Java版本,则当然可以在路径说明中使用通配符,例如以下这样,用于更通用的目录:

:resource-paths ["/tmp/SiebelJars/*"]
2020-03-23