我无法让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
?我哪里出错?
答案 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。