我正在尝试创建一个名为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
这里发生了什么?谢谢!
答案 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
编辑:修正了网址