2

我无法让 Clojure 的lobos数据库迁移库与 maven-clojure-plugin 和 Maven 样式的项目结构一起使用。Lobos 在命名空间中寻找数据库迁移lobos.migrations。如果我布局项目 Leiningen 风格:

src/
  lobos/
    migrations.clj

loboslobos.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"]

然后 loboslobos.migrations再次正确找到。

我想使用 Maven 风格的项目布局(最终使用 maven-clojure-plugin)。我怎样才能帮助 lobos 找到lobos.migrations?我哪里出错了?

4

2 回答 2

2

lobos.migration/*src-directory*变量指示用于查找的源根*migrations-namespace*。如果lobos.migration/*reload-migrations*为 true(默认值),则lobos.migrations在此源目录中查找迁移命名空间。默认值为src/,因此需要将其重新绑定到src/main/clojure才能使用 Maven 样式的目录结构。

另一个值得注意的问题:当从 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 回答