Мне было интересно, есть ли способ исключить некоторые миграции во время выполнения, используя методы Flyway Callback
.Flyway исключает некоторые миграции в Callbacks
Я уже делаю некоторые работы в них, но я хотел бы исключить некоторые миграции, которые содержат dev в их описании.
Спасибо!
изменение: добавлено мое простое изменение в миграционном распознаватель
@Override
public Collection<ResolvedMigration> resolveMigrations() {
assert flyway != null;
assert flyway.getLocations() != null;
assert flyway.getLocations().length > 0;
List<ResolvedMigration> migrations = Lists.newArrayList();
for (String stringLocation : flyway.getLocations()) {
Location location = new Location(stringLocation);
Scanner scanner = new Scanner(ClassLoader.getSystemClassLoader());
Resource[] resources = scanner.scanForResources(location,
flyway.getSqlMigrationPrefix(),
flyway.getSqlMigrationSuffix());
for (Resource resource : resources) {
if (!resource.getFilename().contains("_dev")) {
ResolvedMigrationImpl resolvedMigration = extractMigrationInfo(location, resource);
resolvedMigration.setPhysicalLocation(resource.getLocationOnDisk());
resolvedMigration.setExecutor(new SqlMigrationExecutor(new PostgreSQLDbSupport(flywayConnection),
resource,
new PlaceholderReplacer(flyway.getPlaceholders(),
flyway.getPlaceholderPrefix(),
flyway.getPlaceholderSuffix()),
flyway.getEncoding()));
migrations.add(resolvedMigration);
}
}
Collections.sort(migrations, new ResolvedMigrationComparator());
}
return migrations;
}
Хм, да, я знаю об этом, но, видимо, когда проект был запущен, мы не знали, что можем это сделать, поэтому мы закончили использование чего-то типа 'V1_0__dev_test.sql'. Думаю, мне просто нужно будет либо реорганизовать, либо я проверю их, если это решит. Благодаря! –
ОК, я написал свою реализацию, она отлично работает и не добавляет миграции с '_dev' в их описание, но проблема в том, что она все еще запускает эти миграции ... Любые идеи? –
Ваш собственный резольвер? Можете ли вы опубликовать источник? – markdsievers