Spring启动 - 启动时禁用Liquibase

时间:2016-06-08 16:33:42

标签: java spring maven spring-boot liquibase

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

6 个答案:

答案 0 :(得分:27)

在application.properties文件中添加liquibase.enabled=false

Reference

但如果您不想再使用liquibase,请从pom中删除liquibase starter。

答案 1 :(得分:21)

Spring版本之间的相关属性名称已更改:

  • 对于 Spring 4.x.x liquibase.enabled=false应用程序属性禁用Liquibase。

  • 对于 Spring 5.x.x spring.liquibase.enabled=false应用程序属性禁用Liquibase。

答案 2 :(得分:19)

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

的前缀
 prefix = "spring.liquibase"

所以,我的建议是使用

spring.liquibase.enabled=false

它通过spring boot 2.0.0.RC1解决了我的问题

答案 3 :(得分:4)

我遇到了一个问题,我出于某种原因无法从属性中禁用Liquibase,所以这就是我用@Bean注释禁用Liquibase的方法:

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

答案 4 :(得分:3)

还有另一种程序化方法。

@EnableAutoConfiguration(exclude = LiquibaseAutoConfiguration.class)

在应用程序主类上

答案 5 :(得分:2)

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

您可以查看plugin documentation了解配置详情。

并且不要使用Spring Boot的liquibase支持,因为它仅用于运行时。只需删除liquibase启动器和/或任何相关的依赖项,因为您只需要maven插件。