2

我正在使用 Flyway 从 Clojure 中进行数据库迁移。我遇到的问题是当我制作一个 uberjar 来部署我的应用程序时,Flyway 找不到 jar 文件中的迁移。它在开发中运行良好,无需打包应用程序。我尝试了一堆不同的组合来将迁移 sql 文件添加到 jar 中。我已经解压了 jar,所有的迁移都在那里,我不确定问题是什么。

Exception in thread "main" com.googlecode.flyway.core.api.FlywayException: Unable to determine URL for classpath location: db/migration

我正在使用 flyway 版本 2.1.1,现在我的迁移位于 src/db/migration 中。我尝试将 src/ 添加到 project.clj 文件中的资源路径,但它仍然找不到它们。有任何想法吗?

4

2 回答 2

1

发生这种情况是因为 leiningen 生成的 jars/uberjars 中没有包含目录条目,直到 2.3.2 版本,所以ClassLoader#getResources("db/migration/")总是返回 null。

将在 leiningen 2.3.3 (Issue #1303 ) 中修复。

于 2013-08-22T06:51:01.310 回答
0

如果这会因为 überjar 而失败,我不会感到惊讶,因为目前在类路径扫描器中没有对此的明确支持。

请在问题跟踪器中提交增强请求。

于 2013-06-24T17:16:02.923 回答