Spring boot - 在启动时禁用 Liquibase

问题描述 投票:0回答:10

我想用我的 Spring Boot 应用程序配置 Liquibase,因此我向

pom.xml
添加了依赖项,并将路径设置为
master.xml
中的
application.properties
。这工作正常,并且 Spring Boot 在启动时运行 Liquibase。问题是现在我想手动运行 Liquibase,而不是在应用程序启动时运行。我应该完全禁用 Liquibase 的自动配置,还是可以使用它并仅在启动时禁用运行评估?

java spring-boot maven liquibase
10个回答
119
投票

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


38
投票

在 application.properties 文件中添加

liquibase.enabled=false

参考

但是如果您不想再从应用程序中使用 liquibase,请从 pom 中完全删除 liquibase starter。


35
投票

如果您在 LiquibaseProperties 上看到,有一个类似

的前缀
 prefix = "spring.liquibase"

所以,我的建议是使用

spring.liquibase.enabled=false

它解决了我的 Spring Boot 2.0.0.RC1 问题


16
投票

我遇到了一个问题,由于某种原因,我无法从属性中禁用 Liquibase,因此这就是我使用

@Bean
注释禁用 Liquibase 的方法:

@Bean
public SpringLiquibase liquibase() {
  SpringLiquibase liquibase = new SpringLiquibase();
  liquibase.setShouldRun(false);
  return liquibase;
}

15
投票

还有一种程序化方法。

@EnableAutoConfiguration(exclude = LiquibaseAutoConfiguration.class)

关于应用程序主类


4
投票

application.yml
的另一种方法:

spring:
  autoconfigure:
    exclude:
      - org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration

3
投票

如果您想手动运行 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 插件。


1
投票

虽然记录的 Spring Boot 解决方案是

spring.liquibase.enabled=false
,但它对我不起作用。要禁用 liquibase,您还可以使用以下属性:

liquibase.shouldRun=false

我在启动 Spring Boot jar 时将其作为命令行参数传递

-Dliquibase.shouldRun=false

参见https://docs.liquibase.com/parameters/should-run.html


0
投票

您可以使用 spring.liquibase.enabled=true/false


0
投票

如果您有应用程序-{profile}.yml,您可以使用:

liquibase:
    enabled: false
© www.soinside.com 2019 - 2024. All rights reserved.