Порядок выполнения плагина Maven SQL

Я столкнулся с некоторой проблемой при заказе выполнения sql.

У нас есть один файл сценария sql для каждой таблицы в одном каталоге. Пример: в каталоге c:\SqlScripts есть файлы user.sql и role.sql. Мы используем плагин sql maven для выполнения этих файлов sql.

В таблице ролей есть ключ Foriegn для пользовательской таблицы, и выполнение завершается ошибкой, потому что подключаемый модуль пытается выполнить role.sql перед user.sql. Я не могу использовать атрибут orderfile, поскольку мы указываем как c:\SqlScripts*.sql.

Как мне преодолеть эту проблему?

Я вижу 2 решения:

  1. Объедините все скрипты в один файл в порядке создания, скрипт для создания роли идет после скрипта для создания пользователя.

  2. Уберите подстановочный знак * и укажите каждый файл в атрибуте в порядке выполнения.

  3. Пронумеруйте имена файлов в соответствии с порядком выполнения, например: 1_user.sql, 2_role.sql и используйте атрибут файла порядка «по возрастанию» (хотя не уверен, что это сработает, поскольку порядок может не применяться)

Есть ли более элегантные решения?


person Julia    schedule 14.10.2010    source источник
comment
Как выглядит POM для настройки плагина sql?   -  person khmarbaise    schedule 14.10.2010
comment
Вы должны определить файлы через srcFiles, которые будут выполнять файлы в том порядке, в котором они были определены.   -  person khmarbaise    schedule 14.10.2010
comment
Да, но, к сожалению, ‹srcFile› не принимает подстановочные знаки :( Знаете какие-нибудь обходные пути?   -  person Julia    schedule 19.10.2010


Ответы (1)


Я не могу использовать атрибут orderfile, поскольку мы указываем как c:\SqlScripts*.sql.

Очевидно, что это сработает только в том случае, если у вас нет строгих требований к заказу. Если вы сделаете...

Как мне преодолеть эту проблему?

...используйте настройку, которая позволяет работать с упорядочением детерминированным образом.

Я вижу 3 решения (...). Есть ли более элегантные решения?

Я думаю, ты попал. Я отдаю предпочтение варианту 3.

person Pascal Thivent    schedule 14.10.2010
comment
Я считаю, что лучший вариант — использовать ‹srcFiles› с порядком, в котором я хочу выполнить, но, к сожалению, как упоминалось выше, он не принимает подстановочные знаки. - person Julia; 19.10.2010