Clojure: задача lein не может найти jdbc, хотя приложение может найти его в порядке

Я пытаюсь создать пользовательскую задачу lein под названием migrate, поэтому я могу сказать в командной строке:

lein migrate

lein находит мой файл задачи в папке src/leiningen/migrate.clj (в соответствии с соглашением leiningen). В объявлении ns для задачи у меня есть запрос на файл из моего проекта

(ns leiningen.migrate
  (require [triface.migration :as mm]))

(defn migrate []
  (mm/run-migrations))

Он находит src/triface/migration.clj в порядке, но для ЭТОГО файла требуется файл, для которого требуется jdbc:

(ns triface.db
  (:require [clojure.java.jdbc :as sql]))

Этот вызов отлично работает в моем приложении, но из этой задачи lein он завершается со следующей ошибкой:

Exception in thread "main" java.io.FileNotFoundException: 
Could not locate clojure/java/jdbc__init.class or clojure/java/jdbc.clj on classpath

Что здесь происходит? Спасибо!


person prismofeverything    schedule 21.07.2011    source источник


Ответы (2)


Путь к классам немного отличается. Чтобы использовать его как есть, вы должны определить :dev-dependencies в вашем файле project.clj.

Например,

:dev-dependencies [[org.clojure/java.jdbc "0.0.4"] ]

Затем файл jar загружается правильно.

(ns triface.migration
  (:require [clojure.java.jdbc :as sql]))

 (defn run-migrations[]
   "hello")
person Nicolas Modrzyk    schedule 21.07.2011

Вы можете увидеть, как это делает Lein-LB, здесь: https://bitbucket.org/kumarshantanu/lein-lb/src/tip/README.md

Изменить: исправлен URL

person Shantanu Kumar    schedule 21.07.2011