在Maven风格的项目布局中找不到lobos.migrations

时间:2013-02-19 14:48:43

标签: maven clojure leiningen

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

src/
  lobos/
    migrations.clj
通过lobos.migrations运行时,

lobos在运行时正确找到lein。但是,如果我列出Maven风格的项目:

src/
  main/
    clojure/
      lobos/
        migrations.clj

并使用maven-clojure-plugin运行相同的测试,lobos不再找到lobos.migrations。我认为这是clojure-maven-plugin的一个问题,但如果我通过leon运行,在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?我哪里出错?

2 个答案:

答案 0 :(得分:2)

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
  )

答案 1 :(得分:0)

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