环境
- 老板6
- 飞路 1.5
- 弹簧芯 2.5.6
战争结构
ei-web-1.0.1-SNAPSHOT.war
|WEB-INF
|classes
|db
|migrations
|ei
|V5.7.0.sql
|V5.7.1.sql
|V5.7.2.sql
问题
当我尝试在 JBoss 启动时加载的 MBean 中执行 Flyway 迁移时,我得到以下堆栈跟踪。
java.io.FileNotFoundException: URL [vfs:/C:/jboss-6.1.0.Final/server/ei/deploy/ei-web-1.0.1-SNAPSHOT.war/WEB-INF/classes/db/migrations/ ei/] 无法解析为绝对文件路径,因为它不在文件系统中:vfs:/C:/jboss-6.1.0.Final/server/ei/deploy/ei-web-1.0.1-SNAPSHOT。战争/WEB-INF/classes/db/迁移/ei/
线索
- flyway 基础目录是db/migrations/ei
- flyway初始版本为5.7.0
- 以独立方式启动时,迁移是可以的
- 恕我直言,问题是类路径目录扫描不成功的结果。
请参阅com.googlecode.flyway.core.migration.sql.SqlMigrationResolver (L.99)
final String searchPattern = "**/" + sqlMigrationPrefix + "?*" + sqlMigrationSuffix;
Resource[] resources = new PathMatchingResourcePatternResolver(classLoader)
.getResources("classpath:" + searchRoot + searchPattern);
就我而言,资源返回一个空数组。