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] 中找不到迁移位置
在 websphere 上的 flyway 迁移上找不到位置