1

我正在尝试制作一个名为 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

这里发生了什么?谢谢!

4

2 回答 2

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")
于 2011-07-21T02:14:55.540 回答
-1

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

编辑:修正了网址

于 2011-07-21T07:14:36.227 回答