Как заставить Лейна работать с JFreeChart и Dejcartes? - PullRequest
5 голосов
/ 23 октября 2011

Я пытаюсь понять, как использовать lein с clojure и заставить его загружать правильные файлы .jar на Win7 x64.В качестве конкретного примера я пытаюсь использовать JFreeChart и Dejcartes.

Мои вопросы являются общими и не относятся к JfreeChart.Я принципиально не понимаю, как сократить разрыв между просмотром примера, использующего какой-то конкретный пакет, и получением этого пакета для меня через lein.Надеюсь, кто-то может ответить так, как это применимо и к другим пакетам.

Ссылка на эту ссылку: https://github.com/markmfredrickson/dejcartes/blob/master/Readme.txt Мой project.clj похож на это (закомментировал одну или другую последние 2 строки дляэтот пост).

(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. Я вижу (import '(org.jfree.chart chartframe)), используемый в readme.txt Dejcartes, так что я думаю, что это означает, что мне нужен файл .jar для JFreeChart, верно?

    Я поместил [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, чтобы поместить его в classpath для меня, чтобы я мог использовать lein, используя emacs и т. д .?

  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), даже не отображается Дежкартв большом списке.Как получить Lein для загрузки Dejcartes?

  3. Наконец, учитывая, что я хочу начать использовать какой-то пакет, как мне получить lein для автоматического поиска последней версии?Я ничего не видел об этом, и все примеры project.clj, кажется, жестко запрограммировали версию, например, "1.0.2" и т. Д.

Большое спасибо

Michael

1 Ответ

5 голосов
/ 25 октября 2011

Первый шаг - узнать имя библиотеки, которую вы хотите получить. Если это библиотека Java, то, вероятно, она находится в Maven Central. Чтобы выяснить это, перейдите на Maven Central Search и найдите нужную вам библиотеку. В этом случае я пошел туда и искал JFreeChart. Это дало мне это . Баночка, которую вы хотите, указана там. Они разделены на три соответствующие части: groupid, artifactid и verison. Groupid - это часть перед косой чертой (/), artifactid - это часть после косой черты, а версия - это ... ну, версия. Положите это вместе, и у вас есть [jfree/jfreechart "1.0.13"].

Если библиотека, которую вы ищете, является библиотекой Clojure, то, вероятно, она установлена ​​на clojars , и в этом случае вы захотите пойти туда и выполнить поиск.

Чтобы ответить на часть о том, что Дейкарт не был найден, это потому, что это старая и заброшенная библиотека, которая не управляется leiningen, cake, maven или чем-то еще. Это не в любом хранилище Maven. Вы не сможете найти его там, если не поставите его там сами, что является совершенно другим вопросом.

Чтобы ответить на ваш третий вопрос, у leiningen есть задача search по поиску вещей в различных репозиториях. В настоящее время в Cake есть похожая вещь для поиска клояров, но я, вероятно, перепишу ее, чтобы она основывалась на более общем коде Лейнингена.

...