我正在尝试了解如何使用lein与clojure并让它在Win7 x64上下载正确的.jar文件。作为一个具体的例子,我正在尝试使用JFreeChart和Dejcartes。
我的问题是通用的,不是特定于JfreeChart。我从根本上不明白如何缩小看到使用某个特定包的示例与通过lein为我提供该包之间的差距。希望有人也能以适用于其他套餐的方式回答。
请参阅此链接:https://github.com/markmfredrickson/dejcartes/blob/master/Readme.txt 我的project.clj就像这样(在这篇文章中注释掉了一行或另外两行)。
(defproject monty "1.0.0-SNAPSHOT"
:description "Monty Game Challenge"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"]
;[org.jfree/chart "1.0.13"]])
[com.markmfredrickson/dejcartes "1.0.0"]])
我在Dejcartes readme.txt中看到(import '(org.jfree.chart chartframe))
,所以我认为这意味着我需要JFreeChart的.jar文件,对吧?
我将[org.jfree/chart "1.0.13"]
放在我的project.clj中,但lein deps
抱怨如下:
C:\Users\me\code\Clojure\monty>lein deps
Downloading: org/jfree/chart/1.0.13/chart-1.0.13.pom from central
Downloading: org/jfree/chart/1.0.13/chart-1.0.13.pom from clojure
Downloading: org/jfree/chart/1.0.13/chart-1.0.13.pom from clojars
Downloading: org/jfree/chart/1.0.13/chart-1.0.13.pom from central
Downloading: org/jfree/chart/1.0.13/chart-1.0.13.jar from central
Downloading: org/jfree/chart/1.0.13/chart-1.0.13.jar from clojure
Downloading: org/jfree/chart/1.0.13/chart-1.0.13.jar from clojars
Downloading: org/jfree/chart/1.0.13/chart-1.0.13.jar from central
An error has occurred while processing the Maven artifact tasks.
Diagnosis:
Unable to resolve artifact: Missing:
----------
1) org.jfree:chart:jar:1.0.13
Try downloading the file manually from the project website.
我想我需要直接下载.jar文件,但是一旦我有了.jar文件,我怎么哄lein把它放在类路径中让我这样我就可以使用emacs等lein swank呢?
Dejcartes示例使用(require '[com.markmfredrickson.dejcartes :as chart])
,因此我将[com.markmfredrickson/dejcartes "1.0.0"]
放在project.clj中。这似乎是在我运行lein deps
时开始下载一些东西,但随后它以相同的方式窒息:
C:\Users\me\code\Clojure\monty>lein deps
Downloading: com/markmfredrickson/dejcartes/1.0.0/dejcartes-1.0.0.pom from central
Downloading: com/markmfredrickson/dejcartes/1.0.0/dejcartes-1.0.0.pom from clojure
Downloading: com/markmfredrickson/dejcartes/1.0.0/dejcartes-1.0.0.pom from clojars
Downloading: com/markmfredrickson/dejcartes/1.0.0/dejcartes-1.0.0.pom from central
Downloading: com/markmfredrickson/dejcartes/1.0.0/dejcartes-1.0.0.jar from central
Downloading: com/markmfredrickson/dejcartes/1.0.0/dejcartes-1.0.0.jar from clojure
Downloading: com/markmfredrickson/dejcartes/1.0.0/dejcartes-1.0.0.jar from clojars
Downloading: com/markmfredrickson/dejcartes/1.0.0/dejcartes-1.0.0.jar from central
An error has occurred while processing the Maven artifact tasks.
Diagnosis:
Unable to resolve artifact: Missing:
----------
1) com.markmfredrickson:dejcartes:jar:1.0.0
Try downloading the file manually from the project website.
据称从(clojars)下载的其中一个存储库甚至没有大名单中显示的Dejcartes。如何让Lein下载Dejcartes?
最后,鉴于我想开始使用某个软件包,如何让lein自动查找最新版本?我还没有看到任何关于这一点的内容,所有的project.clj示例似乎都对版本进行了硬编码,例如"1.0.2"
等。
非常感谢
迈克尔
答案 0 :(得分:5)
第一步是找出您想要获得的库的名称。如果它是一个Java库,它可能在Maven Central上。要找到答案,请转到Maven Central Search并搜索您所追求的任何图书馆。在这种情况下,我去了那里搜索JFreeChart。它给了我this。你想要的罐子列在那里。它们分为三个相关部分:groupid,artifactid和verison。 groupid是斜杠(/)之前的部分,artifactid是斜杠之后的部分,版本是......好吧,版本。把它放在一起,你有[jfree/jfreechart "1.0.13"]
。
如果您所使用的库是Clojure库,则它可能位于clojars,在这种情况下,您将要去那里搜索。
要回答有关未找到dejcartes的部分,那是因为它是一个旧的废弃图书馆,不受leiningen,蛋糕,maven或其他任何东西管理。它不在任何maven存储库中。你不会在那里找到它,除非你自己把它放在那里,这完全是一个完全不同的问题。
为了回答你的第三个问题,leiningen有一个search
任务来搜索各种回购的东西。 Cake目前在搜索clojars方面有类似的东西,但我可能会根据更一般的Leiningen代码重写它。