我是clojure的新手.我有一个jar文件,我想在一个clojure repl中玩,但我没有用leiningen 2这样做.
我尝试将jar文件放在src/myjar.jar中,也放在src/org/mydomain/myjar.jar中
当我运行lein repl时,我收到错误,指出leiningen无法找到我的工件,并且引用了一个关于可重复性的页面我不明白.
这是我的project.clj(真实姓名为myjar)
(defproject cljliveordead "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.3.0"]
[org.allen.temporalintervalrelationships/time "0.2" :extension "jar"]])
Run Code Online (Sandbox Code Playgroud)
您可以使用 lein-localrepo 插件来使用本地 jar。将此行添加到您的project.clj
:plugins [[lein-localrepo "0.4.0"]]
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令将 jar 安装到本地存储库
lein localrepo install <path-to-jar> org.allen.temporalintervalrelationships/time 0.2
Run Code Online (Sandbox Code Playgroud)
您可以通过运行来检查该文件是否已安装lein localrepo list,并检查 lein 是否可以使用 来解析项目依赖项lein deps。如果一切顺利,那么您可以开始使用 jar 来玩lein repl。
Leiningen 不喜欢本地 jar,因为它的目标是可重复构建。如果这是一个使用第三方闭源 jar 的真实项目,那么最好的办法是将其安装在本地 Nexus 存储库中,并将对该存储库的引用添加到您的项目中。
然而,对于您想要实现的目标来说,这一切似乎有点沉重。如果您只想使用 REPL 中的 jar,那么创建一个像这样的简单项目
(defproject clojure-time "0.1.0-SNAPSHOT"
:dependencies [[org.clojure/clojure "1.4.0"]
[com.cemerick/pomegranate "0.0.13"]])
Run Code Online (Sandbox Code Playgroud)
并使用石榴库手动将 jar 添加到类路径中
(require '[cemerick.pomegranate :as p])
(p/add-classpath "jsr-310-ri-0.6.3.jar")
(javax.time.Instant/now)
Run Code Online (Sandbox Code Playgroud)
并继续玩耍。