我在Spring Boot应用程序中有简单的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;
}
}
问题是当我使用maven(mvn全新安装)构建应用程序时,将执行“ db.changelog-master.xml”文件中的所有changset。我只想在我的应用程序启动时执行它(因此:mvn spring-boot:run)。我应该设置什么配置来实现这一目标?
最佳答案
实际上,@ SpringBootTest在这里是一个问题。它启动了应用程序上下文,因此导致在maven安装阶段执行liquibase变更集。