Flyway 仅在我的 jar 文件中找不到迁移

Posted

技术标签:

【中文标题】Flyway 仅在我的 jar 文件中找不到迁移【英文标题】:Flyway not finding migraions only in my jar file 【发布时间】:2013-07-02 16:24:57 【问题描述】:

我遇到了与this 类似的问题,但我已迁移到 2.1.1 版,但问题仍然存在。 我只是做这样的事情

 Flyway flyway = new Flyway();
    flyway.setLocations(MIGRATION_PACKAGES);
    flyway.setDataSource(getDatasource());
    flyway.setTable("schema_version");
    flyway.setSqlMigrationPrefix("v");
    flyway.migrate();

这没有问题,因为在我的 IDE 中一切正常,但是当我在 jar 中打包时,没有找到我的迁移... 有什么想法吗?

编辑:我已经测试过将包含迁移的 jar 依赖于刚刚迁移的测试应用程序,并且迁移应用正常......我不知道我能做什么。

编辑我已启用 FINEST 日志记录,目前正在查找迁移

FINE: Scanning for resources at 'db/migration' (Prefix: 'v', Suffix: '.sql')
juil. 10, 2013 4:44:53 PM com.googlecode.flyway.core.util.scanner.ClassPathScanner findResourceNames
FINE: Unable to determine URL for classpath location: db/migration (ClassLoader: java.net.URLClassLoader@6458c2)
juil. 10, 2013 4:44:53 PM com.googlecode.flyway.core.util.scanner.ClassPathScanner scanForClasses
FINE: Scanning for classes at 'db/migration' (Implementing: 'com.googlecode.flyway.core.api.migration.jdbc.JdbcMigration')
juil. 10, 2013 4:44:53 PM com.googlecode.flyway.core.util.scanner.ClassPathScanner findResourceNames
FINE: Unable to determine URL for classpath location: db/migration (ClassLoader: java.net.URLClassLoader@6458c2)
juil. 10, 2013 4:44:53 PM com.googlecode.flyway.core.util.scanner.ClassPathScanner scanForResources
FINE: Scanning for resources at 'com/me/myapp/sql/migration' (Prefix: 'v', Suffix: '.sql')
juil. 10, 2013 4:44:53 PM com.googlecode.flyway.core.util.scanner.ClassPathScanner findResourceNames
FINE: Unable to determine URL for classpath location: com/me/myapp/sql/migration (ClassLoader: java.net.URLClassLoader@6458c2)
juil. 10, 2013 4:44:53 PM com.googlecode.flyway.core.util.scanner.ClassPathScanner scanForClasses
FINE: Scanning for classes at 'com/me/myapp/sql/migration' (Implementing: 'com.googlecode.flyway.core.api.migration.jdbc.JdbcMigration')
juil. 10, 2013 4:44:53 PM com.googlecode.flyway.core.util.scanner.ClassPathScanner findResourceNames
FINE: Unable to determine URL for classpath location: com/me/myapp/sql/migration (ClassLoader: java.net.URLClassLoader@6458c2)

【问题讨论】:

调试什么也没说,我在创建我添加的flyway实例之前只有一个日志,在这个日志之后什么都没有打印..这就是为什么它很奇怪。但是当我在应用程序测试或从我的 IDE 启动时,迁移完成没有问题。而且它不在服务器上,它是一个带有一个 H2 数据库的本地应用程序。 是的,我在创建 flyway 实例之前显示了我的类路径。在我的 jar 中,我有 sql/migration 包,其中包含所有迁移。这就是为什么我真的不明白这个问题 我尝试克隆 git repo 并添加更多日志,也许我会看到问题.. MIGRATION_PACKAGES 的值是多少? 【参考方案1】:

扫描位置的默认名称是db/migration,而不是sql/migrations。如果您想改用sql/migrations,请设置:

flyway.setLocations("sql/migrations");

【讨论】:

以上是关于Flyway 仅在我的 jar 文件中找不到迁移的主要内容,如果未能解决你的问题,请参考以下文章

Flyway:在 [classpath:db/migration] 中找不到迁移位置

Flyway 在 Maven 多模块项目中找不到迁移

在 websphere 上的 flyway 迁移上找不到位置

我的Eclipse插件中找不到自定义log4j appender

TypeScript:仅在单元测试中找不到模块的声明文件

在 docker 容器上运行数据库时,Flyway 找不到迁移