Pode Flyway ou Liquibase gerar um script de atualização em vez de atualizar o banco de dados diretamente?

Primeiro, um pouco de fundo. Eu tenho um conjunto de aplicativos Java, alguns baseados em JPA, outros não. Para criar meus bancos de dados, estou usando atualmente a exportação de esquemas do Hibernate para gerar scripts de criação para aqueles que usam o JPA. Aqueles que não usam o JPA eu gero os scripts manualmente. Estes são então executados durante a instalação do aplicativo usando ANT. Para atualizações, o instalador do aplicativo simplesmente aplica scripts de atualização ao banco de dados.

Para melhorar o gerenciamento de atualizações de banco de dados, tenho procurado a Flyway e a Liquibase. Ambos parecem quase fazer o que eu quero, (de fora: eu estou preferindo o Flyway no momento por causa de todos os scripts SQL / DDL pré-existentes que nós temos). O problema que posso ver é que ambos atualizam o banco de dados diretamente. Isso é bom para muitas instalações, mas não para todas.

O que eu gostaria de fazer é executar o Flyway / Liquibase no banco de dados e gerar um script de atualização que incorpora todas as atualizações necessárias para atualizar o banco de dados - incluindo as alterações que o Flyway / Liquibase precisa fazer em suas próprias tabelas. Isso permitiria que eu (ou, mais importante, um administrador de banco de dados) executasse o script de atualização fora do (s) aplicativo (s) para atualizar o banco de dados. Eu poderia então usar Flyway / Liquibase dentro do meu aplicativo apenas para verificar se o banco de dados está atualizado.

É possível fazer isso com Flyway ou Liquibase ou qualquer outra ferramenta para esse assunto?

questionAnswers(5)

yourAnswerToTheQuestion