1

我正在使用 Java API 使用 Flyway 进行 Java 和 SQL 迁移。我没有更改迁移文件夹的默认位置,即我使用“db/migration”。

但是,为了清楚起见,我希望将 SQL 和 Java 迁移放在同一个文件夹中(Flyway 从 src/main/java/db/migration 文件夹读取 Java 迁移,从 src/main/resources 读取 SQL 迁移/db/迁移)。我试图将 SQL 脚本复制到 java 文件夹,但 flyway 忽略了它们。

这可能吗?

4

1 回答 1

1

Flyway 从 src/main/java/db/migration 读取 Java 迁移

不完全是。默认情况下,Flyway 从类路径中读取 Java 迁移(和 SQL 迁移)。src/main/java包含源文件,而不是类。

您的构建工具,Gradle / Maven 等,将在 .java 源文件中查找src/main/java,编译它们并将类放在某个输出目录中,例如build/classes/java/maintarget/classes等等。这个输出目录的内容将位于类路径中,因此Flyway 可见。

为了将 .sql 文件从源目录获取到类路径,您的构建工具需要被告知复制它们。

例如,在 Gradle 中,这样的东西可能会起作用(未经测试 - 请参阅文档以获取更多信息):

sourceSets {
    main {
        resources {
            srcDir file('src/main/resources')
            include '**/*.sql'
            exclude '**/*.java'
        }
    }
}
于 2019-05-21T11:35:26.340 回答