在Tomcat下运行liquibase?

问题描述

一个人如何启动liquibase模式数据库按计划在Tomcat下的基线上进行检查?像如何在Tomcat下部署liquibase?

解决方法

如何利用ServletContextListener并在其中创建新对象 Liquibase

类似

import java.sql.Connection;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import liquibase.Liquibase;
import liquibase.database.Database;
import liquibase.database.DatabaseFactory;
import liquibase.database.jvm.JdbcConnection;
import liquibase.resource.ClassLoaderResourceAccessor;
import liquibase.resource.CompositeResourceAccessor;
import liquibase.resource.FileSystemResourceAccessor;
import lombok.SneakyThrows;

@WebListener
public class LiquibaseListener implements ServletContextListener {

  @SneakyThrows
  @Override
  public void contextInitialized(ServletContextEvent sce) {
    final Connection connection = null;
    final Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(connection));
    final Liquibase liquibase = new Liquibase("changelogpath",new CompositeResourceAccessor(new ClassLoaderResourceAccessor(),new FileSystemResourceAccessor()),database);
    liquibase.update("");
    
  }
}

或者在SpringLiquibase里面查看一下Spring框架是如何完成的,您可以从中得到启发。