[英]Spring boot - disable Liquibase at startup
我想用我的Spring Boot应用程序配置 Liquibase,所以我将依赖项添加到pom.xml
并在application.properties
中将路径设置为master.xml
。 这工作正常并且Spring Boot在启动时运行Liquibase 。 问题是现在我想手动运行Liquibase ,而不是在应用程序启动时。 我应该完全禁用Liquibase的自动配置,还是可以使用它并仅在启动时禁用运行评估?
Spring 版本之间的相关属性名称已更改:
对于Spring 4.xx : liquibase.enabled=false
应用程序属性禁用 Liquibase。
对于Spring 5.xx : spring.liquibase.enabled=false
应用程序属性禁用 Liquibase。
PS和Flyway:
Spring 4.xx : flyway.enabled=false
弹簧 5.xx : spring.flyway.enabled=false
在 application.properties 文件中添加liquibase.enabled=false
但是,如果您不想再从应用程序中使用 liquibase,请从 pom 中完全删除 liquibase starter。
如果您在 LiquibaseProperties 上看到,则有一个前缀,例如
prefix = "spring.liquibase"
所以,我的建议是使用
spring.liquibase.enabled=false
它用 spring boot 2.0.0.RC1 解决了我的问题
我遇到了一个问题,由于某种原因我无法从属性中禁用 Liquibase,所以这就是我使用@Bean
注释禁用 Liquibase 的@Bean
:
@Bean
public SpringLiquibase liquibase() {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setShouldRun(false);
return liquibase;
}
还有一种更程序化的方法。
@EnableAutoConfiguration(exclude = LiquibaseAutoConfiguration.class)
在应用程序主类上
如果你想手动运行 Liquibase,你可以使用 liquibase maven 插件。 只需将这样的内容添加到您的 pom.xml 中:
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>${liquibase.version}</version>
<configuration>
<changeLogFile>src/main/liquibase/master.xml</changeLogFile>
<propertyFile>src/main/liquibase/liquibase.properties</propertyFile>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
</configuration>
</plugin>
您可以查看插件文档以了解配置详细信息。
并且不要使用 Spring Boot 的 liquibase 支持,因为它仅用于运行时。 只需删除 liquibase starter 和/或任何相关的依赖项,因为您只需要 maven 插件。
您可以使用 spring.liquibase.enabled=true/false
虽然记录的 Spring 引导解决方案是spring.liquibase.enabled=false
,但它对我不起作用。 要禁用 liquibase,您还可以使用以下属性:
liquibase.shouldRun=false
我在启动 Spring Boot jar 时将其作为命令行参数传递
-Dliquibase.shouldRun=false
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.