我正在为使用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来实现这一点?
答案 0 :(得分:1)
要针对spring-boot的jar文件执行脚本,应该可以帮助您:
MonobehaviourField<object>[]
编辑:这已经针对spring-boot 1.5.x进行了测试,但是我想它也应该针对2.x版本工作。