【问题标题】:lobos.migrations not found in Maven-style project layout在 Maven 风格的项目布局中找不到 lobos.migrations
【发布时间】:2013-02-19 14:48:43
【问题描述】:

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

src/
  lobos/
    migrations.clj

当通过lein 运行时,lobos 在运行时正确找到lobos.migrations。但是,如果我以 Maven 风格布置项目:

src/
  main/
    clojure/
      lobos/
        migrations.clj

并使用maven-clojure-plugin 运行相同的测试,lobos 不再找到lobos.migrations。我认为这是 clojure-maven-plugin 的问题,但如果我通过 leon 运行,我会遇到同样的问题(lobos 找不到 lobos.migrations),并在 project.clj 中适当地设置源路径:

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

如果我将lobos/ 移回src/ 下并添加src/ 作为源路径:

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

然后 lobos 再次正确找到 lobos.migrations

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

【问题讨论】:

    标签: maven clojure leiningen


    【解决方案1】:

    lobos.migration/*src-directory* 变量表示查找*migrations-namespace* 的源根。如果lobos.migration/*reload-migrations* 为真(默认值),则lobos.migrations 在此源目录中查找迁移命名空间。默认是src/,所以需要重新绑定到src/main/clojure才能使用Maven风格的目录结构。

    另一个值得注意的问题:当从 JAR(即不是从源代码)运行时,您还必须禁用重新加载迁移命名空间:

    (binding [lobos.migration/*reload-migrations* false]
       ;; run migration
      )
    

    【讨论】:

      【解决方案2】:

      您需要更改动态变量lobos.migration/*migrations-namespace*。这记录在这里:https://github.com/budu/lobos#migrations

      【讨论】:

      • @BarryWark 重新绑定后遇到什么样的错误?
      猜你喜欢
      • 2011-11-08
      • 2011-07-19
      • 2014-01-21
      • 2012-03-18
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      • 2015-07-25
      • 2019-07-07
      相关资源
      最近更新 更多