如何从Flyway中的同一文件夹读取Java和SQL迁移

时间:2019-05-21 10:29:09

标签: java flyway

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

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

这可能吗?

1 个答案:

答案 0 :(得分:1)

  

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

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

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

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

例如,在Gradle中,类似的方法可能有效(未经测试-有关更多信息,请参见docs):

sourceSets {
    main {
        resources {
            srcDir file('src/main/resources')
            include '**/*.sql'
            exclude '**/*.java'
        }
    }
}