如何从 Flyway 中的同一文件夹读取 Java 和 SQL 迁移
How to read Java and SQL migration from same folder in Flyway
我正在使用 Java API 使用 Flyway 进行 Java 和 SQL 迁移。我没有更改迁移文件夹的默认位置,即我使用 "db/migration"。
但是,为了清楚起见,我希望将 SQL 和 Java 迁移都放在同一个文件夹中(Flyway 从 [=19 读取 Java 迁移=] 文件夹和来自 src/main/resources/db/migration 的 SQL 个)。我试图将 SQL 脚本复制到 java 文件夹,但 flyway 忽略了它们。
这可能吗?
Flyway reads the Java migrations from src/main/java/db/migration
不完全是。默认情况下,Flyway 从类路径中读取 Java 迁移(和 SQL 迁移)。 src/main/java
包含源文件,而不是 类。
您的构建工具,Gradle / Maven 等,将在 src/main/java
中查找 .java 源文件,编译它们并将 类 放入某个输出目录,例如build/classes/java/main
、target/classes
等。输出目录的内容将位于类路径中,因此对 Flyway 可见。
为了将 .sql 文件从源目录获取到类路径,需要告知您的构建工具复制它们。
例如,在 Gradle 中,这样的事情可能有效(未测试 - 请参阅 docs 了解更多信息):
sourceSets {
main {
resources {
srcDir file('src/main/resources')
include '**/*.sql'
exclude '**/*.java'
}
}
}
我正在使用 Java API 使用 Flyway 进行 Java 和 SQL 迁移。我没有更改迁移文件夹的默认位置,即我使用 "db/migration"。
但是,为了清楚起见,我希望将 SQL 和 Java 迁移都放在同一个文件夹中(Flyway 从 [=19 读取 Java 迁移=] 文件夹和来自 src/main/resources/db/migration 的 SQL 个)。我试图将 SQL 脚本复制到 java 文件夹,但 flyway 忽略了它们。
这可能吗?
Flyway reads the Java migrations from src/main/java/db/migration
不完全是。默认情况下,Flyway 从类路径中读取 Java 迁移(和 SQL 迁移)。 src/main/java
包含源文件,而不是 类。
您的构建工具,Gradle / Maven 等,将在 src/main/java
中查找 .java 源文件,编译它们并将 类 放入某个输出目录,例如build/classes/java/main
、target/classes
等。输出目录的内容将位于类路径中,因此对 Flyway 可见。
为了将 .sql 文件从源目录获取到类路径,需要告知您的构建工具复制它们。
例如,在 Gradle 中,这样的事情可能有效(未测试 - 请参阅 docs 了解更多信息):
sourceSets {
main {
resources {
srcDir file('src/main/resources')
include '**/*.sql'
exclude '**/*.java'
}
}
}