我想用我的 Spring Boot 应用程序配置 Liquibase,因此我向
pom.xml
添加了依赖项,并将路径设置为 master.xml
中的 application.properties
。这工作正常,并且 Spring Boot 在启动时运行 Liquibase。问题是现在我想手动运行 Liquibase,而不是在应用程序启动时运行。我应该完全禁用 Liquibase 的自动配置,还是可以使用它并仅在启动时禁用运行评估?
Spring 版本之间相关属性名称已更改:
对于 Spring 4.x.x:
liquibase.enabled=false
应用程序属性禁用 Liquibase。对于 Spring 5.x.x:
spring.liquibase.enabled=false
应用程序属性禁用 Liquibase。附注对于飞行路线:
Spring 4.x.x:
flyway.enabled=false
春季 5.x.x:
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
public SpringLiquibase liquibase() {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setShouldRun(false);
return liquibase;
}
还有一种程序化方法。
@EnableAutoConfiguration(exclude = LiquibaseAutoConfiguration.class)
关于应用程序主类
application.yml
的另一种方法:
spring:
autoconfigure:
exclude:
- org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration
如果您想手动运行 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 启动器和/或任何相关依赖项,因为您只需要 Maven 插件。
虽然记录的 Spring Boot 解决方案是
spring.liquibase.enabled=false
,但它对我不起作用。要禁用 liquibase,您还可以使用以下属性:
liquibase.shouldRun=false
我在启动 Spring Boot jar 时将其作为命令行参数传递
-Dliquibase.shouldRun=false
您可以使用 spring.liquibase.enabled=true/false
如果您有应用程序-{profile}.yml,您可以使用:
liquibase:
enabled: false