Tive o mesmo problema não muito tempo atrás, esbarrei na sua pergunta várias vezes enquanto procurava uma solução no Google, então acho que devo a você - aqui estão minhas descobertas até agora:
Em resumo, não há soluções prontas para isso:se você abrir Ant ou Maven source, você verá que eles estão usando um divisor de script simples baseado em regexp que é bom para scripts simples, mas geralmente falha em, por exemplo, procedimentos armazenados. Mesma história com iBATIS, migrações de banco de dados c5, etc.
O problema é que há mais de uma linguagem envolvida:para executar "Scripts SQL" é preciso ser capaz de lidar com (1) comandos SQL, (2) PL/SQL e (3) sqlplus.
Executando
sqlplus
em si é o caminho de fato, mas cria confusão na configuração, então tentamos evitar essa opção. Existem analisadores ANTLR para PL/SQL, como o de Alexandre Porcelli — esses são muito próximos, mas ninguém preparou uma solução drop-in completa com base neles até agora.
Acabamos escrevendo mais um divisor ad hoc que está ciente de alguns comandos sqlplus como
/
e EXIT
— ainda é feio, mas funciona para a maioria dos nossos scripts. (Observe que alguns scripts, por exemplo, com --
à direita comentários, não vai funcionar - ainda é uma gambiarra, não uma solução.)