2016-12-01 3 views
0

Мне было интересно, есть ли способ исключить некоторые миграции во время выполнения, используя методы 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; 
} 

ответ

1

пролетный путь обеспечивает инструмент (ы), чтобы сделать это уже.

Первый - locations, который вы могли бы использовать для буксировки ваших миграций разработки/тестирования.

src/main/resources 
└── db 
    ├── migration  <-- Common migrations here 
    └── dev-migration <-- Dev only migrations here 

Второй - resolvers. Немного больше тяжеловеса, но можно использовать для достижения аналогичной вещи.

Лично я использовал первый вариант для выделения миграции развития.

+0

Хм, да, я знаю об этом, но, видимо, когда проект был запущен, мы не знали, что можем это сделать, поэтому мы закончили использование чего-то типа 'V1_0__dev_test.sql'. Думаю, мне просто нужно будет либо реорганизовать, либо я проверю их, если это решит. Благодаря! –

+0

ОК, я написал свою реализацию, она отлично работает и не добавляет миграции с '_dev' в их описание, но проблема в том, что она все еще запускает эти миграции ... Любые идеи? –

+0

Ваш собственный резольвер? Можете ли вы опубликовать источник? – markdsievers

Смежные вопросы