我正在尝试使用 Liquibase 3.6 版来维护数据库版本更改。当我需要执行单个文件更改时,我能够执行数据库版本更改。
我已使用以下代码成功执行版本更改,但我的目的是从文件夹而不是单个文件动态执行更改日志。我只对 Liquibase 的所有配置使用 Java
@Startup
@Singleton
@TransactionManagement(TransactionManagementType.BEAN)
public class InitializerBean {
@Resource(mappedName = "java:/M2M_RESOURCES")
private DataSource ds;
@PostConstruct
protected void bootstrap() {
ResourceAccessor resourceAccessor = new ClassLoaderResourceAccessor(getClass().getClassLoader());
try (Connection connection = ds.getConnection()) {
JdbcConnection jdbcConnection = new JdbcConnection(connection);
Database db = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(jdbcConnection);
Liquibase liquiBase = new Liquibase("data/liquibase/", resourceAccessor, db);
liquiBase.update("Development");
} catch (SQLException | LiquibaseException e) {
}
}
}
当 Liquibase 类的第一个参数是单个文件时,liquibase 能够执行更改,但是当我打算执行单个文件夹的所有文件时,无法跟踪和执行更改。
我使用的是 JDK 1.8,data/liquibase/ 中的文件是 dbChangelog.sql 和 dbChangelog_2.sq。所有代码都部署在 Wildfly 10 上,作为 ear 存档的一部分