2013-02-19 83 views
2

我无法获得用于Clojure的lobos数据库迁移库,可以使用maven-clojure插件和Maven风格的项目结构。 Lobos在lobos.migrations命名空间中查找数据库迁移。如果我布局项目Leiningen风格:在Maven风格的项目布局中找不到lobos.migrations

src/ 
    lobos/ 
    migrations.clj 

正确洛沃斯在运行时发现lobos.migrations,当通过lein运行。但是,如果我布置项目Maven风格:

src/ 
    main/ 
    clojure/ 
     lobos/ 
     migrations.clj 

,并使用maven-clojure-plugin运行相同的测试,罗伯斯不再认定lobos.migrations。我认为这是与clojure-maven-plugin一个问题,但我有同样的问题(罗伯斯没有找到lobos.migrations),如果我通过莱昂运行,在project.clj适当地设置源路径:

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

如果我提出lobos/src/下并添加src/作为源路径:

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

然后罗伯士再次正确认定lobos.migrations

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

回答

2

lobos.migration/*src-directory*变量表示查找的源根*migrations-namespace*。如果lobos.migration/*reload-migrations*为真(默认值),则lobos.migrations会在此源目录中查找迁移名称空间。缺省值为src/,所以需要将其重新设置为src/main/clojure才能使用Maven样式的目录结构。其他

一个值得注意的问题:很不幸

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

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

+0

,不解决这个问题:从JAR运行时(即不从源代码),您必须禁用迁移命名空间的重装为好。 – 2013-02-26 05:45:50

+0

@BarryWark重新绑定后会出现什么样的错误? – ponzao 2013-02-26 12:38:57