我正在使用Java API使用Flyway进行Java和SQL迁移。我尚未更改迁移文件夹的默认位置,即使用“ db / migration”。
但是,为清楚起见,我想将SQL和Java迁移都放在同一个文件夹中(Flyway从src / main / java / db / migration文件夹读取Java迁移,从src /读取SQL迁移。主要/资源/数据库/迁移)。我试图将SQL脚本复制到java文件夹,但是flyway忽略了它们。
这可能吗?
答案 0 :(得分:1)
Flyway从src / main / java / db / migration读取Java迁移
不完全是。默认情况下,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'
}
}
}