После нескольких дней исследований, да , есть способ запустить Liquibase поверх Wix Embedded MySQL.
Вот шаг за шагом:
Настройка встроенной базы данных Wix
Конфигурация вокруг Wix довольно проста, как описано на их GitHub :
MysqldConfig config = aMysqldConfig(v5_7_latest)
.withCharset(UTF8)
.withPort(3060)
.withUser("myuser", "mypassword")
.withTimeZone("America/Sao_Paulo")
.build();
EmbeddedMysql mysqld = anEmbeddedMysql(config)
.addSchema("myschema")
.start();
Конфигурация Liquibase
Я добавил зависимость Liquibase maven в свой проект, поэтому у нас есть программный доступ к коду Liquibase, здесь можно найти API .
Сначала мы должны создать источник данных и перейти к Liquibase, чтобы найти правильную реализацию нашей базы данных, в результате чего мы можем затем манипулировать объектом Liquibase для выполнения целей:
DataSourceBuilder<?> dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.username(mysqld.getConfig().getUsername());
dataSourceBuilder.password(mysqld.getConfig().getPassword());
dataSourceBuilder.driverClassName(com.mysql.jdbc.Driver.class.getName());
dataSourceBuilder.url("jdbc:mysql://localhost:3060/myschema");
DataSource dataSource = dataSourceBuilder.build();
Database database = DatabaseFactory
.getInstance()
.findCorrectDatabaseImplementation(
new JdbcConnection(dataSource.getConnection()) // Fetch MySQL database implementation
);
Liquibase liquibase = new Liquibase("liquibase/mychanges.xml", // Path to liquibase changes
new ClassLoaderResourceAccessor(),
database);
liquibase.update(new Contexts()); // This execute the liquibase:update on the embedded database