如何在clojure中导入本地java库?(雷音)

Mic*_*rer 5 java git jar clojure maven

我正在尝试使用一个名为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)
Run Code Online (Sandbox Code Playgroud)

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")))}]]
Run Code Online (Sandbox Code Playgroud)

项目文件夹:

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
Run Code Online (Sandbox Code Playgroud)

如果您需要查看其他任何文件,请查看git页面.

jas*_*ssa 5

这可能是最简单的方法.你有一个〜/ .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存储库"source",所以它看起来是我的自定义仓库,然后是maven central,然后是clojars.