Java 为什么可以';t my RCP应用程序检测已部署Flyway/Spring项目中的迁移文件
我有一个Spring/H2/Hibernate项目,正在尝试集成flyway。该项目是使用maven构建的,并创建一个Jar,然后将其包含在访问数据库的其他应用程序中 我的问题是,当我测试spring项目flyway工作正常并创建模式时,但是当我在另一个项目中部署lib时,它似乎找不到迁移脚本。我已经检查过了,它们在jar文件中 我的spring配置:Java 为什么可以';t my RCP应用程序检测已部署Flyway/Spring项目中的迁移文件,java,spring,hibernate,eclipse-rcp,flyway,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-me
<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上下文XML文件和属性文件,但flyway似乎没有找到sql文件
对于我的位置,我尝试了“com.domain”、“com/domain”、“classpath:/”、“classpath:/database1/migration/”
所有这些都在Spring项目中工作,然后在包含jar时检测不到文件
你知道为什么会这样吗
编辑:我想这可能是因为我在RCP应用程序中包含了jar,也许FlyWay检测文件的方式与Spring不同
编辑
您使用的
flyway core
的版本是什么?flyway中有一个从jar文件扫描sql脚本的错误。详情请参阅。此问题已在4.1版本中修复,因此您可以通过添加最新版本的flyway core
进行尝试
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
<version>4.2.0</version>
</dependency>
编辑
这是一个错误,需要在Flyway进行修复。目前,您可以在插件项目中创建db/migration文件夹,并将迁移sql文件保存在该文件夹中。在不区分大小写的平台(例如Windows)中开发时,您是否部署到区分大小写的平台(例如Linux)你有日志吗?@Michael没有,它们都在同一个eclipse工作区中运行。@Ueli没有,我不知道如何获取flyway日志,我遇到的第一个错误是当应用程序试图访问一个不存在的DB表时。Flyway已经生成了它的审计表,但是没有输入任何条目,所以它已经连接到嵌入式数据库,所以我知道spring配置正在工作。似乎找不到SQL文件。只是猜测:com/domain而不是com.domain?文档总是使用“/”作为目录分隔符。@Link19请查看我的编辑答案,然后使用filesystem:prefix尝试位置的完整路径。是的,这确实有效,这就是我目前解决问题的方法,但是我不想这样使用它。这是否给了您一个提示,或者您建议这是一个解决方案?我已经包括了一个项目,它重现了我原来问题中的错误。啊,太遗憾了,我在这个问题上押了很多赌注,希望我做错了什么。为什么你撤销了先前接受的选择答案?这是正确的答案。我知道你在悬赏上做了很多回购,但无论如何你都会失去它,因为那是不可逆转的。
<property name="locations" value="filesystem:C:/project/spring-flyway/src/main/resources/db/migration" />