Во-первых, немного фона. У меня есть набор приложений Java, некоторые из них основаны на JPA, а некоторые нет. Чтобы создать мои базы данных, я в настоящее время использую экспорт схемы Hibernates для создания сценариев создания для тех, кто использует JPA. Те, кто не использует JPA, я генерирую скрипты вручную. Затем они запускаются во время установки приложения с помощью ANT. Для обновлений программа установки приложений просто применяет сценарии обновления к базе данных.
Чтобы улучшить управление обновлениями баз данных, я смотрел Flyway и Liquibase. Кажется, что я почти делаю то, что хочу, (в сторону: я предпочитаю Flyway на данный момент из-за всех существующих SQL/DDL-скриптов). Проблема, которую я вижу, заключается в том, что они одновременно обновляют базу данных. Это нормально для многих установок, но не для всех.
Что мне нужно сделать, так это запустить Flyway/Liquibase против базы данных и создать обновление script, которое включает в себя все обновления, необходимые для обновления базы данных - включая любые изменения, которые Flyway/Liquibase необходимо сделать самостоятельно столы. Это позволило бы мне (или, что еще важнее, администратору базы данных) запустить обновление script вне приложения (ов) для обновления базы данных. Затем я мог использовать Flyway/Liquibase в своем приложении, чтобы убедиться, что база данных обновлена.
Можно ли это сделать с помощью Flyway или Liquibase или любого другого инструмента?