Liquibase - 仅在应用程序启动时执行变更集
Liquibase - execute changesets only when application is starting
我在 Spring 启动应用程序中有简单的 liquibase 配置:
@Configuration
public class MySQLConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource getDataSource()
{
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("com.mysql.jdbc.Driver");
dataSourceBuilder.url("jdbc:mysql://localhost:3306/test");
dataSourceBuilder.username("root");
dataSourceBuilder.password("root");
return dataSourceBuilder.build();
}
@Bean(name = "liquibase")
public SpringLiquibase liquibase(DataSource dataSource) {
SpringLiquibase springLiquibase = new SpringLiquibase();
springLiquibase.setDataSource(dataSource);
springLiquibase.setChangeLog("classpath:liquibase/db.changelog-master.xml");
return springLiquibase;
}
}
问题是 "db.changelog-master.xml" 文件中的所有变更集在我使用 maven (mvn clean install) 构建应用程序时执行。我只想在我的应用程序启动时执行它(因此,相应地:mvn spring-boot:运行)。我应该设置什么配置来实现这个?
事实上@SpringBootTest 在这里是个问题。它启动一个应用程序上下文,因此导致在 maven 安装阶段执行 liquibase 变更集。
我在 Spring 启动应用程序中有简单的 liquibase 配置:
@Configuration
public class MySQLConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource getDataSource()
{
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("com.mysql.jdbc.Driver");
dataSourceBuilder.url("jdbc:mysql://localhost:3306/test");
dataSourceBuilder.username("root");
dataSourceBuilder.password("root");
return dataSourceBuilder.build();
}
@Bean(name = "liquibase")
public SpringLiquibase liquibase(DataSource dataSource) {
SpringLiquibase springLiquibase = new SpringLiquibase();
springLiquibase.setDataSource(dataSource);
springLiquibase.setChangeLog("classpath:liquibase/db.changelog-master.xml");
return springLiquibase;
}
}
问题是 "db.changelog-master.xml" 文件中的所有变更集在我使用 maven (mvn clean install) 构建应用程序时执行。我只想在我的应用程序启动时执行它(因此,相应地:mvn spring-boot:运行)。我应该设置什么配置来实现这个?
事实上@SpringBootTest 在这里是个问题。它启动一个应用程序上下文,因此导致在 maven 安装阶段执行 liquibase 变更集。