java - 为什么我的 RCP 应用程序无法检测到已部署的 Flyway/Spring 项目中的迁移文件

标签 java spring hibernate eclipse-rcp flyway

我有一个 Spring/H2/Hibernate 项目,正在尝试集成 flyway。该项目是使用 maven 构建的,并创建了一个 Jar,然后我将其包含在访问数据库的其他应用程序中。

我的问题是,当我测试 spring 项目 flyway 工作正常并创建我的架构时,但是当我在另一个项目中部署 lib 时,它似乎没有找到迁移脚本。我已经检查过了,它们在 jar 文件中。

我的 Spring 配置:

<bean id="flyway_database_1" class="org.flywaydb.core.Flyway" init-method="migrate">
    <property name="dataSource" ref="dataSource1" />
    <property name="locations" value="com.domain" />
    <property name="sqlMigrationPrefix" value="DATABASE_1_V" />
</bean>

<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${database.1.driver}" />
    <property name="url" value="${database.1.url}" />
</bean>

我的应用程序在类路径中找到了 Spring Context XML 文件和属性文件,但 flyway 似乎没有找到 sql 文件。

对于我的位置,我尝试了“com.domain”、“com/domain”、“classpath:/”、“classpath:/database1/migration/”

所有这些都在 Spring 项目中工作,然后在包含 jar 时无法检测到文件。

关于为什么会这样有什么想法吗?

编辑:我认为这可能是因为我在 RCP 应用程序中包含了 jar,也许 FlyWay 检测文件的方式与 Spring 不同?

编辑 A zip containing an example of this happening the RCP project includes the DB project and flyway cannot detect the migration files.

最佳答案

您使用的 flyway-core 是什么版本?从 jar 文件扫描 sql 脚本的 flyway 中存在一个错误。请看https://github.com/flyway/flyway/issues/1261了解详情。此问题已在 4.1 版本中修复,因此您可以尝试添加最新版本的 flyway-core

<dependency>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-core</artifactId>
    <version>4.2.0</version>
</dependency>

编辑

您能否尝试使用 filesystem: 提供完整的位置路径,如下所示,看看它是否有效?

<property name="locations" value="filesystem:C:/project/spring-flyway/src/main/resources/db/migration" />

编辑

这是一个错误,需要在 Flyway 进行修复。 https://github.com/flyway/flyway/issues/1630 .目前,您可以在插件项目中创建 db/migration 文件夹,并将迁移 sql 文件保存在那里。

关于java - 为什么我的 RCP 应用程序无法检测到已部署的 Flyway/Spring 项目中的迁移文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43742393/

相关文章:

java - 与 Spring 和 JPA 的事务

java - ObjectOutputStream 在 PlayerList.java 中不可用 - 无法获取表的数据

java - 使用字符串代替变量名

java - Spring JMS 消费者应用程序

java - Spring Boot @DataJpaTest 不生成 ddl

java - 如何防止模型映射器在 spring data jpa 中急切加载关联集合?

java - lambda 表达式阻止类进行 spring 组件扫描

java - Spring Boot微服务: dynamic role, 基于权限的安全

spring - org.hibernate.HibernateException : No Session found for current thread

java - 使用 JPA 和 Spring 时如何更改 java.lang.Enum 的序数?