3

我正在尝试 flyway 并且对类路径和 JAR 有一个理解问题。

我有一个在多个 Maven 模块中包含多个服务的项目。我希望每个服务都使用 flyway 维护其架构。因此,每个服务都是一个具有自己资源目录的 Maven 模块,我可以在其中放置 SQL 脚本,这将成为 JAR 的一部分。现在,该服务可以在嵌入式模式下运行,其中最终用户应用程序(例如 tomcat)中存在多个服务 JAR。

在服务初始化时,我将使用每个服务的数据源运行 flyway migrate。如果我使用 java 迁移,我可以将 java 类与 impls 保存在同一个包中并按位置分开,但如果我使用 SQL 迁移,我会得到这样的东西:

src/main/resources/db/migration/V1_1__Populate_table.sql

在每个模块中。现在的问题:

  • flyway可以从jar中执行sql脚本吗?
  • 如果是,我可以指定要执行的 jars 吗?
4

1 回答 1

7

如果 JAR 是类路径的一部分,则将获取迁移。

在您的情况下,您应该每个模块使用一个 Flyway 实例。然后为该实例配置其自己的 SQL 迁移位置,以便仅拾取相关文件。

例如:flyway.locations=db/migration/mymodule

也没有什么可以阻止将 SQL 迁移与该模块的 java 类放在同一个包中。

于 2013-01-06T09:46:27.440 回答