2

Clojure 用のlobosデータベース移行ライブラリを取得して、maven-clojure-plugin および Maven スタイルのプロジェクト構造を操作するのに問題があります。Lobos はlobos.migrations名前空間でデータベースの移行を探します。プロジェクトを Leiningen スタイルにレイアウトすると、次のようになります。

src/
  lobos/
    migrations.clj

経由で実行すると、 lobos はlobos.migrations実行時に正しく検出されますlein。ただし、プロジェクトを Maven スタイルでレイアウトすると、次のようになります。

src/
  main/
    clojure/
      lobos/
        migrations.clj

を使用しmaven-clojure-pluginて同じテストを実行すると、lobos は を検出しなくなりますlobos.migrations。これは の問題だと思いましたが、ソース パスを適切に設定して leon 経由で実行するclojure-maven-pluginと、同じ問題 (lobos が見つからない) が発生します。lobos.migrationsproject.clj

:source-paths      ["src/main/clojure"]

lobos/下に戻ってソース パスとしてsrc/追加すると、次のようになります。src/

:source-paths      ["src" "src/main/clojure"]

その後、ロボスは再び正しく検索lobos.migrationsします。

Maven スタイルのプロジェクト レイアウト (そして最終的には maven-clojure-plugin) を使用したいと考えています。ロボが見つけられるようにするにはどうすればよいlobos.migrationsですか? どこで間違ったのですか?

4

2 に答える 2

2

変数は、のソースlobos.migration/*src-directory*を検索するためのソース ルートを示します。true (デフォルト) の場合、このソース ディレクトリで migrations 名前空間を探します。デフォルトはであるため、Maven スタイルのディレクトリ構造を使用するには、に再バインドする必要があります。*migrations-namespace*lobos.migration/*reload-migrations*lobos.migrationssrc/src/main/clojure

もう 1 つの注目すべき問題: JAR から (つまり、ソースからではなく) 実行する場合は、移行名前空間の再読み込みも無効にする必要があります。

(binding [lobos.migration/*reload-migrations* false]
   ;; run migration
  )
于 2013-03-11T04:57:15.927 に答える
0

動的変数を変更する必要がありますlobos.migration/*migrations-namespace*。これはここに文書化されています:https ://github.com/budu/lobos#migrations 。

于 2013-02-21T20:35:26.237 に答える