如何让Lein与JFreeChart和Dejcartes合作?

时间:2011-10-23 04:27:00

标签: clojure dependencies jfreechart leiningen

我正在尝试了解如何使用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"]])
  1. 我在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呢?

  2. 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?

  3. 最后,鉴于我想开始使用某个软件包,如何让lein自动查找最新版本?我还没有看到任何关于这一点的内容,所有的project.clj示例似乎都对版本进行了硬编码,例如"1.0.2"等。

  4. 非常感谢

    迈克尔

1 个答案:

答案 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代码重写它。