在Spring Boot 2上禁用Flyway

11

我一直在尝试在Spring Boot 2上禁用Flyway进行单元测试,但是没有成功。

我从Spring Boot的文档中了解到,用于禁用Flyway的属性已经从flyway.enabled更改为spring.flyway.enabled,并将其添加到我的测试应用程序配置文件中(如下所示)。

spring:
  datasource:
    url: jdbc:h2:mem:db
  jpa:
    hibernate:
      ddl-auto: create
  flyway:
    enabled: false

这个配置似乎完全没有作用,Flyway的自动配置仍然被调用。

我还尝试为单元测试创建一个单独的自动配置类,在其中添加了@EnableAutoConfiguration(exclude = FlywayAutoConfiguration.class),但这次尝试与之前一样失败了。


似乎这应该适用于所有配置文件,您可能需要在spring.profiles=test下找到它,以便仅在测试时禁用。 - mavriksc
1
当您尝试读取此属性的值,例如 @Value("${spring.flyway.enabled}"),在您的测试类中是否打印出 false - Karol Dowbecki
@KarolDowbecki 奇怪的是,Spring 无法注入此属性或任何其他我尝试检查的属性,因此现在我怀疑可能错过了其他某些配置。感谢您的问题,它让我从另一个角度思考 :) - renke
1
@renke 属性解析应该可以直接使用,你可能在测试自动配置中弄错了什么。你是否正在使用 @SpringBootTest@RunWith(SpringRunner.class) - Karol Dowbecki
3个回答

2

这是因为您的 jpa.hibernate.ddl-auto 设置为 create。将其改为 none。否则,flyway.enabled 没有效果。


1
添加
spring.flyway.enabled=false

To application.properies


0

我使用spring-boot 2.0.3-RELEASE,并添加JVM选项-Dspring.flyway.enabled=false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接