Flyway 默认不支持 XML 迁移脚本,仅原生识别 SQL 和 Java 文件;因其设计强调简单、可靠、可审计,而 XML 缺乏标准迁移语义且无内置解析器。
Flyway 默认不支持 XML 格式的迁移脚本,它原生只识别 SQL(.sql) 和 Java(.java) 两类迁移文件。XML 文件(如 .xml)会被 Flyway 忽略,不会被扫描、解析或执行。
Flyway 的设计哲学是“简单、

你不能让 Flyway 直接执行 XML,但可以绕过限制,把 XML 内容“转化”为 Flyway 能识别的形式:
changelog-v1.xml,里面用自定义结构存 DDL:V1__create_user_table.sql 到 src/main/resources/db/migration/,再交由 Flyway 执行。JavaMigration 接口),在 migrate() 方法中读取 classpath 下的 XML 文件,用 DOM/SAX/JAXB 解析出 SQL 语句,再通过 JdbcTemplate 或 Connection 执行。注意:需自行保证语句顺序、事务边界和幂等性。databaseChangeLog)。但切换意味着重构迁移历史、适配新语法、重新学习运维方式,通常得不偿失。绝大多数场景下,直接写 SQL 更安全高效:
V1__init_schema.sql、V2__add_email_to_user.sql)/* +flyway:sql */ 注释标注方言)不复杂但容易忽略:Flyway 的能力边界很明确——它不是通用脚本引擎,而是专注数据库版本控制的轻量工具。用对格式,才能少踩坑。