如何在某个弹簧配置文件中禁用飞路?
Posted
技术标签:
【中文标题】如何在某个弹簧配置文件中禁用飞路?【英文标题】:How to disable flyway in a certain spring profile? 【发布时间】:2017-11-01 10:31:35 【问题描述】:现在我有一个使用 MsSQL 服务器的 spring-boot 应用程序。我们使用 flyway 进行迁移。
我想为测试添加额外的配置文件。我想从实体类生成表,而不是使用 flyway。
我试着在 application.yaml 中这样写
spring:
profiles: test
jpa:
generate-ddl: true
hibernate:
datasource:
url: jdbc:h2:mem:test_db;MODE=MSSQLServer
username: sa
password:
但无论如何都会开始飞行
【问题讨论】:
【参考方案1】:仅供参考,对于任何来这里寻找这个的人,the property name has changed for Spring Boot 2.0:
对于application.properties
格式:
spring.flyway.enabled=false
对于application.yml
格式:
spring:
flyway:
enabled: false
更新:要在特定配置文件中禁用 flyway,您可以将该属性放在特定于该配置文件的属性文件中。例如,如果您的个人资料名为“abc”,您可以将其放入application-abc.properties
。查看Spring's documentation on Profile-specific properties 以更清楚地了解如何命名文件。一般格式为application-profileName.properties
。
【讨论】:
这不是春天。 flyway:启用:false 对不起,我不关注你的评论。 @g*** 查看更新,我添加了一些关于如何将属性应用于特定配置文件的评论和链接。 很高兴它帮助了@g*** 或者,以下在application.yml
中完全有效:spring.flyway.enabled: false
。如果它不起作用,请尝试将 'false' 放在引号中...【参考方案2】:
不适用于 Spring Boot 2.X !正确答案是 here。
如果您需要 Spring Boot 1.X 的答案,请继续阅读。
如果需要,spring-boot 有一个属性可以禁用 flyway flyway.enabled
,默认情况下为 true。
你可以有一个配置文件特定的配置,在你的情况下它应该被命名为application-test.yml
。如果配置文件处于活动状态,此配置可以禁用 flyway。您只需声明如下:
flyway:
enabled: false
如果您在通用配置中指定测试配置文件,只需将其添加到它的根目录。
【讨论】:
如果只需要flyway不发誓不应用某些迁移,可以使用spring.flyway.out-of-order = true【参考方案3】:JIC 带有当前 spring boot 2.x 的官方文档: Data migration properties 并查看标签 # FLYWAY,您会发现许多可以帮助您的属性。
spring.flyway.enabled=false # Whether to enable flyway.
【讨论】:
【参考方案4】:这里是application.yaml
的示例,它定义了 2 个配置文件:
1. enable_flyway_profile
- 启用飞路
2. disable_flyway_profile
- 禁用飞路
spring:
profiles:
active: "enable_flyway_profile"
flyway:
enable: true
....
---
spring:
profiles:
active: "disable_flyway_profile"
flyway:
enable: false
....
【讨论】:
并非如此。 docs.spring.io/spring-boot/docs/current/reference/html/… 你要找的是spring.profiles: "enable_flyway_profile"
active
属性是定义哪个配置文件是活动的
@TecHunter 可能会让您感到惊讶,但该代码在生产中成功运行
哦,好的,很高兴知道!我也更喜欢你写的方式:)更明确【参考方案5】:
我有多个个人资料,例如
-
应用程序集成.yml
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
在 application-integration.yml 中
spring:
flyway:
enabled: false
当我运行它时,它不会禁用飞行路径迁移。我正在使用 SpringBoot2.3.4
【讨论】:
以上是关于如何在某个弹簧配置文件中禁用飞路?的主要内容,如果未能解决你的问题,请参考以下文章