You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flyway能否从Jar包执行迁移?Jar包迁移脚本执行报错求助

解决通过Jar包执行Flyway迁移的问题

你命令里的-locations参数用法不对,这才导致Flyway找不到迁移脚本的位置。我来一步步帮你修正:

问题根源

你直接把Jar文件路径写在classpath:后面,但Flyway的classpath:前缀是用来指向类路径内的资源路径,而非Jar文件本身。正确的做法是先把Jar包加入Flyway的类路径,再指定Jar内迁移脚本的相对路径。

正确的执行命令

用-classpath参数指定你的Jar包,然后-locations指向Jar内脚本所在的classpath路径:

./flyway migrate -url=jdbc:postgresql://127.0.0.1:5432/myproject -user=myproject -password=myproject -classpath=~/src/myproject/target/myproject-0.0.1-SNAPSHOT.jar -locations=classpath:db/migration

命令解释

  • -classpath=~/src/myproject/target/myproject-0.0.1-SNAPSHOT.jar:告诉Flyway把这个Jar包加入类路径,这样它就能读取Jar内的资源
  • -locations=classpath:db/migration:因为你的迁移脚本V1_1__create_table.sql在Jar包的db/migration目录下(src/main/resources下的文件会被打包到Jar的classpath根目录,所以原路径src/main/resources/db/migration对应Jar内的db/migration)

额外验证步骤

你可以先确认Jar包内确实包含这个迁移脚本,执行以下命令:

jar tf ~/src/myproject/target/myproject-0.0.1-SNAPSHOT.jar | grep V1_1__create_table.sql

如果输出类似db/migration/V1_1__create_table.sql的结果,说明脚本路径没问题,执行上面的Flyway命令就可以正常迁移了。

内容的提问来源于stack exchange,提问作者BAE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:22:32