Clojure:lein任务找不到jdbc,即使应用程序可以找到它也没问题

时间:2011-07-21 01:20:13

标签: clojure leiningen

我正在尝试创建一个名为migrate的自定义lein任务,所以我可以在命令行上说:

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

这里发生了什么?谢谢!

2 个答案:

答案 0 :(得分:1)

类路径略有不同。 要按原样使用它,必须在project.clj文件中定义:dev-dependencies。

例如,

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

然后,正确加载jar文件。

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

 (defn run-migrations[]
   "hello")

答案 1 :(得分:-1)

你可以在这里看到Lein-LB是如何做到的:https://bitbucket.org/kumarshantanu/lein-lb/src/tip/README.md

编辑:修正了网址