如何在clojure中导入本地Java库?(莱恩)

迈克尔·奥德勒

我正在尝试使用一个名为DragonConsole的Java库(jar文件),该库不在maven Central或clojars中。

我想在我的clojure应用程序中导入该库,但是到目前为止我还不知道该怎么做。

我尝试设置本地Maven存储库,但我认为我做的不对。

lein deps 给我这个错误:

(Retrieving dragonconsole/dragonconsole/3.0.0/dragonconsole-3.0.0.pom from local)
(Could not transfer artifact dragonconsole:dragonconsole:pom:3.0.0 from/to local)
(file:/home/michael/clj/enclojed/maven_repository/): no supported algorithms found)

project.clj:

:dependencies [[org.clojure/clojure "1.6.0"]
               [clojure-lanterna "0.9.4"]
               [dragonconsole "3.0.0"]]
:repositories [["local" {:url ~(str (.toURI (java.io.File. "maven_repository")))}]]

项目文件夹:

maven_repository/DragonConsolev3.jar
maven_repository/dragonconsole/dragonconsole/maven-metadata-local.xml
maven_repository/dragonconsole/dragonconsole/3.0.0/dragonconsole-3.0.0.pom
doc/...
src/...
test/...
resources/...
project.clj

如果您需要查看其他文件,请查看git page

贾萨

这可能是最简单的方法。您有〜/ .m2目录吗?

1)增加你的依赖于project.clj:dependencies [[dragonconsole "3.0.0"]]

运行时lein run/test/etc,它将尝试从maven Central和Clojars中拉出库,并且它将在〜/ .m2下为您创建路径,例如~/.m2/repository/dragonconsole/dragonconsole/3.0.0/

注意:如果存在具有相同名称和版本的库,只需删除下载的内容(jar,pom等...)

2)在〜/ .m2中的dragonconsole目录下创建指向您的jar的符号链接,例如ln -s /path/to/project/dragonconsole-3.0.0.jar ~/.m2/repository/dragonconsole/...

这次运行lein run/test/etc时它将起作用。这是我发现的最简单,最干净的方法,尽管我没有太多时间来讨论。我之所以喜欢它,是因为您的代码和构建过程所做的更改不超过所需的更改(只需一行即可添加依赖项)。

对于生产,我会寻找一种添加lein存储库“源”的方法,因此它会出现在我的自定义存储库中,然后是maven Central,然后是clojars。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章