我想让Liquibase配置我的spring boot aplication,所以我在pom.xml中添加了依赖项,并在application.properties中设置了master.xml的路径。这很好用,Spring在启动时运行Liquibase。问题是现在我想手动运行Liquibase,而不是在应用程序启动时运行。我应该完全禁用Liquibase自动配置还是我可以使用它并且仅在启动时禁用运行评估?
答案 0 :(得分:27)
在application.properties文件中添加liquibase.enabled=false
但如果您不想再使用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插件。