如何在某个 spring 配置文件中禁用 flyway?

How to disable flyway in a certain spring profile?

现在我有一个 spring-boot 应用程序,它使用 MsSQL 服务器。我们使用 flyway 进行迁移。

我想为测试添加一个额外的配置文件。我想从实体 类 而不是使用 flyway 生成表。

我试着在 application.yaml

中这样写
spring:
  profiles: test
  jpa:
      generate-ddl: true
      hibernate:
  datasource:
    url: jdbc:h2:mem:test_db;MODE=MSSQLServer
    username: sa
    password:

但飞行路线无论如何都会开始

不用于 Spring 启动 2.X ! 正确答案是 .

如果您需要 Spring 启动 1.X 的答案,请继续阅读。

有一个 属性 可用于 spring-boot 以在需要时禁用 flyway flyway.enabled 默认情况下为真。

你可以有一个配置文件特定的配置,在你的情况下它应该被命名为 application-test.yml。如果配置文件处于活动状态,此配置可以禁用 flyway。您只需按如下方式声明它:

flyway:
  enabled: false

如果您在通用配置中指定测试配置文件,只需将其添加到它的根目录即可。

仅供参考,对于任何来这里寻找这个的人,the property name has changed for Spring Boot 2.0

对于application.properties格式:

spring.flyway.enabled=false

对于application.yml格式:

spring:
    flyway:
        enabled: false

更新: 要在特定配置文件中禁用飞路,您可以将 属性 放入特定于该配置文件的属性文件中。例如,如果您的配置文件名为 "abc",您可以将其放在 application-abc.properties 中。查看 Spring's documentation on Profile-specific properties 以更清楚地了解如何命名文件。一般格式为application-{profileName}.properties

JIC 当前 spring 引导 2.x 的官方文档: Data migration properties 并查看标签 # FLYWAY,您会发现许多可以帮助您的属性。

spring.flyway.enabled=false # Whether to enable flyway.

这里是 application.yaml 的示例,它定义了 2 个配置文件:
1. enable_flyway_profile - 启用 flyway
2. disable_flyway_profile - 禁用飞路

spring:
  profiles:
    active: "enable_flyway_profile"
  flyway:
    enable: true
  ....

---

spring:
  profiles:
    active: "disable_flyway_profile"
  flyway:
    enable: false
  ....

我有多个配置文件,例如

  1. 应用-integration.yml
  2. application.yml

在application.yml

spring:
  profiles:
    active: ${ENVIRONMENT_NAME:local}
  flyway:
    enabled: true
    user: ${ORACLE_DB_USER:#{null}}
    password: ${ORACLE_DB_PASS:#{null}}
    locations: classpath:db/migration
    url: ${DB_URL:#{null}}
    driver-class-name: oracle.jdbc.OracleDriver
    #    skipExecutingMigrations: true
    tablespace: MY_TABLESPACE_NAME
    baselineOnMigrate: true
    schemas: MY_SCHEMA_NAME

申请中-integration.yml

spring:
  flyway:
    enabled: false

当我 运行 它时,它不会禁用 flyway 迁移。我正在使用 SpringBoot2.3.4