我在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变更集。

09-25 20:16