1

移行というカスタム 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

追記: URL修正

于 2011-07-21T07:14:36.227 に答える