Liquibase контекст с AND - PullRequest
       16

Liquibase контекст с AND

0 голосов
/ 04 октября 2018

В документации на liquibase написано, что можно определить контекст в наборе изменений, заданном с помощью AND, OR,!и скобки.Но я не нашел способа передать параметр contexts=" V1.0 AND V2.0" в liquibase (через командную строку), так как каждый раз, когда я делаю это, liquibase генерирует пустой файл SQL.Вот как я это пробую:

 .\liquibase --url=offline:mssql? `
--changeLogFile="C:\Users\Ferid\Documents\Box Sync\PRIVATE_Ferid\liquibase-3.5.5-bin\cl.xml" `
--outputFile="C:\Users\Ferid\Documents\Box Sync\PRIVATE_Ferid\liquibase-3.5.5-bin\output.sql" `
--contexts="V1.0 AND V2.0" `
updatesql

Это прекрасно работает, когда я передаю только один контекст или использую V1.0, V2.0, так что он генерирует все наборы изменений с одной из двух версий, но мне нужно генерировать только наборы измененийкоторые имеют оба этих контекста (V1.0 И V2.0).

Вот пример того, как атрибуты контекста моего файла изменений выглядят как

<changeSet author="Ferid" id="1536838228609-1" context="V1.0"> ... </changeSet>
<changeSet author="Ferid" id="1536838228609-2" context="V2.0"> ...</changeSet>

<changeSet author="Ferid" id="1536838228609-3" context="V1.0 AND V2.0"> ...</changeSet>

Я пробовал разные синтаксисы, но ни одиниз них работал на меня.Я использую жидкость на основе 3.5.5.

1 Ответ

0 голосов
/ 04 октября 2018

Контексты лучше всего использовать для таких вещей, как окружение (например, DEV, STAGING, PRODUCTION).Для того, что вы делаете, лучше использовать ярлыки.

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

В этой таблице выражено одно ключевое отличие:

                   labels             contexts
in commands        expression         list
in changelog       list               expression

Таким образом, при определении журнала изменений каждый набор изменений может иметь атрибут «метки», который может содержать список, разделенный запятыми.этикеток.Каждый набор изменений может иметь атрибут «контексты», который может содержать сложное выражение контекстов.Сложные выражения - это такие вещи, как «qa или (acme_inc and dev)»

И наоборот, при использовании команды (т. Е. Deploy) вы можете указать сложное выражение для меток, но только список контекстов.

Статья, ссылка на которую приведена ниже, углубляется, но в целом метки полезны, когда вы можете просто перечислить / описать, для чего предназначен набор изменений, но среду времени развертывания сложно описать.Контексты полезны, когда «контекст», в котором следует развернуть набор изменений, является сложным решением, которое лучше оставить автору набора изменений, а не разработчику.

Одно место, где можно узнать больше о том, как Liquibase справляется с этим, можно найти в блоге Натана: http://www.liquibase.org/2014/11/contexts-vs-labels.html

...