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

标签 maven clojure leiningen

我在获取 lobos 时遇到问题Clojure 的数据库迁移库,可以使用 maven-clojure-plugin 和 Maven 风格的项目结构。 Lobos 在 lobos.migrations 命名空间中查找数据库迁移。如果我布局莱宁根风格的项目:

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 运行,设置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?我哪里出错了?

最佳答案

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
  )

关于maven - 在 Maven 风格的项目布局中找不到 lobos.migrations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14960301/

相关文章:

debugging - 为什么 lein repl 找不到函数?

maven - leiningen project.clj 中的 pom.xml maven 属性

java - Maven资源插件复制文件

java - hibernate 4.2 + 轴 1.4 + Apache Tomcat 7 + maven

java - 如何更新 gwt-maven-plugin 原型(prototype)?

language-agnostic - 用函数式语言管理对嵌套不可变数据结构的更新

java - 我应该在哪里放置要在 Java Web 应用程序项目中下载的 pdf?

multithreading - 在 Clojure 中使用 pmap 来并行化归并排序。程序在结束前挂起约 1 分钟,然后终止

clojure - 如何配置我的 project.clj 以便 Leiningen 在非标准目录结构下找到我的源代码?

clojure - 为什么我的 leiningen 的 repl 显示太多提示信息?