有没有一种简单的方法可以隔离上下文,以便在部署时执行Liquibase?

时间:2019-03-25 11:27:16

标签: spring-boot deployment liquibase

我正在为使用Spring Boot的新服务定义架构。我正在寻找一种配置Liquibase部署的方法,使其仅在特定配置文件处于活动状态时执行。我还想尽可能地禁用所有其他组件,以避免在数据库部署完成之前服务逻辑中的操作。

我已经成功启动了我的服务,并且看到我的变更集得以执行。除了对所有组件进行极端的配置文件操纵外,我不确定是否可以使我的Liquibase配置文件成为隔离的执行方式,从而避免了在应用程序上下文中实例化组件。

这是我的配置:

spring:
  application:
    name: liquibase-spring-postgres-example
  liquibase:
    enabled: false
---
spring:
  profiles: dev
  datasource:
    username: ${service_user}
    password: ${DATASOURCE_DB_PASS}
    url: jdbc:postgresql://{db}:{port}/schema
  liquibase:
    url: jdbc:postgresql://{db}:{port}/schema
---
spring:
  profiles: liquibase
  datasource:
    ## provided to get spring boot to start up
    url: jdbc:postgresql://{db}:{port}/schema
  liquibase:
    user: ${liquibase_user}
    password: ${LIQUIBASE_DB_PASS}
    contexts: release
    enabled: true

在我发现here的评论的帮助下,我尝试成功禁用嵌入式码头服务器等功能:

spring:
...
  main:
    web-application-type: none

除了针对所有bean的极端配置文件定义之外,还有其他方法还是在Spring Boot之外手动运行Liquibase来实现这一点?

1 个答案:

答案 0 :(得分:1)

要针对spring-boot的jar文件执行脚本,应该可以帮助您:

MonobehaviourField<object>[]

编辑:这已经针对spring-boot 1.5.x进行了测试,但是我想它也应该针对2.x版本工作。