демонстрационный адресgit ee.com/young Boya VIP…
Во-первых, давайте разберемся, что такое ликвибаза.
Liquibase — это инструмент рефакторинга базы данных с открытым исходным кодом для отслеживания, управления и применения изменений в базе данных. Он сохраняет все изменения базы данных (включая структуру и данные) в файлах XML для удобного контроля версий.
Что может сделать ликвибаза?
- Не зависит от конкретной базы данных, в настоящее время поддерживает 12 типов баз данных, включая Oracle/Sql Server/DB2/MySql/Sybase/PostgreSQL/Caché, что может помочь системе приложений поддерживать несколько баз данных во время развертывания и обновления базы данных.
- Предоставляет функцию сравнения баз данных, а результаты сравнения сохраняются в формате XML. На основе этого XML вы можете легко развернуть или обновить базу данных с помощью Liquibase.
- Храните изменения в базе данных в формате XML, который однозначно идентифицирует изменение (ChangSet) с автором и идентификатором, а также поддерживает слияние изменений в базе данных, что позволяет нескольким разработчикам работать одновременно.
- Сохраняйте историю изменений базы данных (DatabaseChangeHistory) в базе данных и автоматически пропускайте примененные изменения (ChangSet) при обновлении базы данных.
- Предоставляет функцию отката приложения изменений, которая может откатывать примененные изменения по времени, количеству или тегу. Таким образом, разработчики могут легко восстановить состояние базы данных в любой момент времени.
- Может генерировать документы модификации базы данных (в формате HTML)
- Предоставляет автономную среду IDE и подключаемый модуль Eclipse для рефакторинга данных.
Зачем использовать liquibase для модификации базы данных в традиционном режиме разработки
При ежедневной разработке проекта команда разработчиков часто рассматривает базу данных и приложение как отдельные сущности, что приводит к разделению группы разработки базы данных и группы разработки приложения, что приводит к плохому обмену информацией между командами и несвоевременному обмену информацией. случае проявляется в следующем поведении
- Вручную изменить базу данных
- Невозможно поделиться изменениями базы данных с другими членами команды
- Изменение баз данных или данных с использованием непоследовательных методов
- Управляйте изменениями между версиями базы данных, используя неэффективные ручные методы.
Вышеописанное поведение — это все проблемы, с которыми мы столкнулись в реальной разработке. Мало того, что эффективность низкая, так еще и вероятность ошибок высока, даже старые водители перевернут машину.
Идея решения вышеуказанной проблемы состоит в том, чтобы уменьшить вероятность ручного изменения базы данных вручную и использовать программу для управления заменой версии базы данных.
Управляйте изменениями базы данных с помощью Liquibase
Шаги для использования
- шаг 1: Создайте файл журнала изменений базы данных (журнала изменений).
- Шаг 2: Создайте набор изменений внутри файла журнала изменений.
- Шаг 3: Запустите набор изменений для базы данных через командную строку или скрипт сборки.
- Шаг 4: Проверьте изменения в базе данных.
шаг 1: Создайте файл журнала изменений (changelog.xml)
Файл журнала изменений не обязательно писать в xml, можно также использовать json sql
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
</databaseChangeLog>
шаг 2: добавить набор изменений
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">
<changeSet id="1" author="bob">
<createTable tableName="department">
<column name="id" type="int">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="varchar(50)">
<constraints nullable="false"/>
</column>
<column name="active" type="boolean" defaultValueBoolean="true"/>
</createTable>
</changeSet>
</databaseChangeLog>
Каждый набор изменений однозначно идентифицируется атрибутами «id» и «автор». Атрибут "автор" сводит к минимуму возможность дублирования. Liquibase рассматривает каждый набор изменений как атомарное изменение, которое нужно применить к базе данных. Обычно лучше включить только одно изменение в набор изменений.
шаг 3: запустите ChangeSet liquibase можно запустить с помощью инструментов командной строки, таких как Ant Maven Spring. Демонстрация команд
liquibase --driver=com.mysql.jdbc.Driver \
--classpath=/path/to/classes \
--changeLogFile=com/example/db.changelog.xml \
--url="jdbc:mysql://localhost/example" \
--username=user \
--password=asdf \
update
Шаг 4: Проверьте свою базу данных Вы можете видеть, что база данных теперь содержит таблицу под названием «отдел». Также создаются две другие таблицы: «databasechangelog» и «databasechangeloglock». Таблица databasechangelog содержит список всех инструкций, которые были выполнены для базы данных. Таблица databasechangeloglock используется для того, чтобы два компьютера не пытались изменить базу данных одновременно.
Использовать liquibase в проекте (способ интеграции spring)
Liquibase обеспечивает поддержку Spring, поэтому нам нужно только сослаться на соответствующий пакет jar и настроить его для его использования.
Здесь используйте gradle в качестве примера шаг 1: добавьте зависимости
compile "org.liquibase:liquibase-core"
compile "com.github.sabomichal:liquibase-mssql"
compile "com.microsoft.sqlserver:mssql-jdbc"
testCompile "com.mattbertolini:liquibase-slf4j"
шаг 2: добавьте файл liquibase
Создайте папку liquibase в каталоге ресурсов и создайте файл master.xml в качестве основного файла.
использовать<include file="config/liquibase/changelog/xxx.xml" relativeToChangelogFile="false"/>Файл журнала изменений импорта каталога
Шаг 3: настроить Ликвибазу
@Bean
public SpringLiquibase liquibase(DataSource dataSource, LiquibaseProperties liquibaseProperties) {
SpringLiquibase liquibase = new SpringLiquibase(taskExecutor, env);
liquibase.setDataSource(dataSource);
//制定changelog的位置,这里使用的一个master文件引用其他文件的方式
liquibase.setChangeLog("classpath:config/liquibase/master.xml");
liquibase.setContexts(liquibaseProperties.getContexts());
liquibase.setDefaultSchema(liquibaseProperties.getDefaultSchema());
liquibase.setDropFirst(liquibaseProperties.isDropFirst());
return liquibase;
}
Liquibase будет обновлять базу данных при запуске и может быть настроен для асинхронного выполнения.
Применение рефакторинга и общих операций с базами данных к существующим базам данных
Когда в приложение добавляются новые функции, часто необходимо изменить структуру базы данных или изменить ограничения таблицы. LiquiBase поддерживает более 30 рефакторингов баз данных (см.использованная литература). В этом разделе будут представлены 4 типа рефакторинга: «Добавить столбец», «Удалить столбец», «Создать таблицу» и «Управление данными».
добавить столбец
В начале проекта практически невозможно учесть все столбцы в базе данных. А иногда пользователям требуются новые функции, такие как сбор большего количества данных для информации, хранящейся в системе, что требует добавления новых столбцов. В листинге 4 рефакторинг выполнен с использованием LiquiBase addColumn для добавления столбца в таблицу распространителей в базе данных:
Листинг 4. Рефакторинг базы данных с использованием добавления столбца в наборе изменений LiquiBase
<changeSet id="4" author="joe">
<addColumn tableName="distributor">
<column name="phonenumber" type="varchar(255)"/>
</addColumn>
</changeSet>
удалить столбец
Предположим, вы хотите удалить столбец phonenumber, добавленный в листинге 4 в более поздних версиях. Просто вызовите рефакторинг dropColumn, как показано в листинге 5:
удалить столбец базы данных
<dropColumn tableName="distributor" columnName="phonenumber"/>
создать таблицу
Добавление новой таблицы в базу данных также является распространенным рефакторингом базы данных. В листинге 6 создается новый распространитель таблиц, определяющий столбцы, ограничения и значения по умолчанию:
Листинг 6. Создание новой таблицы базы данных в LiquiBase
<changeSet id="3" author="betsey">
<createTable tableName="distributor">
<column name="id" type="int">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="varchar(255)">
<constraints nullable="false"/>
</column>
<column name="address" type="varchar(255)">
<constraints nullable="true"/>
</column>
<column name="active" type="boolean" defaultValue="1"/>
</createTable>
</changeSet>
оперативные данные
После применения структурного рефакторинга данных (например, добавления столбцов и создания таблиц) часто необходимо вставить данные в таблицы, затронутые рефакторингом. Кроме того, может потребоваться изменение существующих данных в таблицах поиска (или других типах таблиц). В листинге 7 показано, как вставлять данные с помощью набора изменений LiquiBase:
Листинг 7. Вставка данных с использованием набора изменений LiquiBase
<changeSet id="3" author="betsey">
<code type="section" width="100%">
<insert tableName="distributor">
<column name="id" valueNumeric="3"/>
<column name="name" value="Manassas Beer Company"/>
</insert>
<insert tableName="distributor">
<column name="id" valueNumeric="4"/>
<column name="name" value="Harrisonburg Beer Distributors"/>
</insert>
</changeSet>
Вы должны написать сценарии SQL для манипулирования данными, так как использование наборов изменений LiquiBase XML очень ограничено. Иногда проще внести большое количество изменений в базу данных с помощью SQL-скриптов. LiquiBase также может поддерживать эти сценарии. В листинге 8 вызывается метод insert-distributor-data.sql в наборе изменений для вставки данных таблицы распространителя:
Листинг 8. Запуск пользовательского файла SQL из набора изменений LiquiBase
<changeSet id="6" author="joe">
<sqlFile path="insert-distributor-data.sql"/>
</changeSet>
LiquiBase поддерживает множество других рефакторингов баз данных, в том числе «Добавить таблицу поиска» и «Объединить столбцы». Все эти опоры могут быть определены так, как показано в листингах с 4 по 8.
ссылка на xsd набора изменений
<!-- Children for changeSet -->
<xsd:group name="changeSetChildren">
<xsd:choice>
<xsd:element ref="comment" maxOccurs="1" />
<xsd:element ref="createTable" maxOccurs="unbounded" />
<xsd:element ref="dropTable" maxOccurs="unbounded" />
<xsd:element ref="createView" maxOccurs="unbounded" />
<xsd:element ref="renameView" maxOccurs="unbounded" />
<xsd:element ref="dropView" maxOccurs="unbounded" />
<xsd:element ref="insert" maxOccurs="unbounded" />
<xsd:element ref="addColumn" maxOccurs="unbounded" />
<xsd:element ref="sql" maxOccurs="unbounded" />
<xsd:element ref="createProcedure" maxOccurs="unbounded" />
<xsd:element ref="dropProcedure" maxOccurs="unbounded" />
<xsd:element ref="sqlFile" maxOccurs="unbounded" />
<xsd:element ref="renameTable" maxOccurs="unbounded" />
<xsd:element ref="renameColumn" maxOccurs="unbounded" />
<xsd:element ref="dropColumn" maxOccurs="unbounded" />
<xsd:element ref="mergeColumns" maxOccurs="unbounded" />
<xsd:element ref="modifyDataType" maxOccurs="unbounded" />
<xsd:element ref="createSequence" maxOccurs="unbounded" />
<xsd:element ref="alterSequence" maxOccurs="unbounded" />
<xsd:element ref="dropSequence" maxOccurs="unbounded" />
<xsd:element ref="renameSequence" maxOccurs="unbounded" />
<xsd:element ref="createIndex" maxOccurs="unbounded" />
<xsd:element ref="dropIndex" maxOccurs="unbounded" />
<xsd:element ref="addNotNullConstraint" maxOccurs="unbounded" />
<xsd:element ref="dropNotNullConstraint" maxOccurs="unbounded" />
<xsd:element ref="addForeignKeyConstraint" maxOccurs="unbounded" />
<xsd:element ref="dropForeignKeyConstraint" maxOccurs="unbounded" />
<xsd:element ref="dropAllForeignKeyConstraints"
maxOccurs="unbounded" />
<xsd:element ref="addPrimaryKey" maxOccurs="unbounded" />
<xsd:element ref="dropPrimaryKey" maxOccurs="unbounded" />
<xsd:element ref="addLookupTable" maxOccurs="unbounded" />
<xsd:element ref="addAutoIncrement" maxOccurs="unbounded" />
<xsd:element ref="addDefaultValue" maxOccurs="unbounded" />
<xsd:element ref="dropDefaultValue" maxOccurs="unbounded" />
<xsd:element ref="addUniqueConstraint" maxOccurs="unbounded" />
<xsd:element ref="dropUniqueConstraint" maxOccurs="unbounded" />
<xsd:element ref="setTableRemarks" maxOccurs="unbounded" />
<xsd:element ref="setColumnRemarks" maxOccurs="unbounded" />
<xsd:element ref="customChange" maxOccurs="unbounded" />
<xsd:element ref="update" maxOccurs="unbounded" />
<xsd:element ref="delete" maxOccurs="unbounded" />
<xsd:element ref="loadData" maxOccurs="unbounded" />
<xsd:element ref="loadUpdateData" maxOccurs="unbounded" />
<xsd:element ref="executeCommand" maxOccurs="unbounded" />
<xsd:element ref="stop" maxOccurs="unbounded" />
<xsd:element ref="output" maxOccurs="unbounded" />
<xsd:element ref="empty" maxOccurs="unbounded" />
<xsd:element ref="rollback" maxOccurs="1" />
<xsd:any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded" />
</xsd:choice>
</xsd:group>
Плагин Gradle Liquibase использует
Установите плагин Gradle
Gradle 2.0 и выше написание
plugins {
id 'org.liquibase.gradle' version '2.0.0'
}
Gradle 2.0 ниже пишет
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath "org.liquibase:liquibase-gradle-plugin:2.0.0"
}
}
apply plugin: 'org.liquibase.gradle'
зависимости конфигурации
dependencies {
...
// 选择你需要的依赖
liquibaseRuntime 'org.liquibase:liquibase-core:3.6.1'
liquibaseRuntime 'org.liquibase:liquibase-groovy-dsl:2.0.0'
liquibaseRuntime 'mysql:mysql-connector-java:5.1.34'
...
}
Настройте действия liquibase (аналогично профилю)
//生成对比记录文件的位置
project.ext.diffChangelogFile = 'src/main/resources/config/liquibase/changelog/' + new Date().format('yyyyMMddHHmmss') + '_changelog.xml'
//生成sql文件的位置
project.ext.generateSql = 'src/main/resources/config/liquibase/sql/' + new Date().format('yyyyMMddHHmmss') + '_update.sql'
liquibase {
activities {
prod {
driver 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
url 'jdbc:sqlserver://localhost:1433;database=damManager'
username 'SA'
password 'yourStrong(!)Password'
changeLogFile 'config/liquibase/master.xml'
defaultSchemaName ''
logLevel 'debug'
baseDir 'src/main/resources/'
outputFile project.ext.generateSql
}
dev {
driver 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
url 'jdbc:sqlserver://localhost:1433;database=damManager'
username 'SA'
password 'yourStrong(!)Password'
password 'sql_2008dba'
changeLogFile 'config/liquibase/master.xml'
defaultSchemaName ''
logLevel 'debug'
baseDir 'src/main/resources/'
outputFile project.ext.generateSql
}
diffLog {
driver ''
url 'jdbc:sqlserver://localhost:1433;database=damManager'
username 'SA'
password 'yourStrong(!)Password'
changeLogFile project.ext.diffChangelogFile
defaultSchemaName ''
logLevel 'debug'
classpath 'src/main/resources/'
}
runList = 'dev' // 这里代表选择哪一个配置 可用参数代替
}
}
Конфигурация начального класса
Функцию Liquibase можно расширить, настроив класс входа. Развернуть пример адреса проектаgit ee.com/young Boya VIP…
Класс входа по умолчаниюliquibase.integration.commandline.Main
Метод конфигурации
liquibase {
mainClassName = 'liquibase.ext.commandline.LiquibaseAlternativeMain'
}
После завершения настройки вы можете увидеть задачу liquibase в gradle.
Примечание. Если вы используете такие теги, как include, вам нужно обратить внимание
file="xxx/xxx/xxx.xml"Абсолютный путь и относительный путь. Если вы установите относительныйToChangelogFile="false", это означает, что вы используете абсолютный путь, а true выбирает относительный путь. Вы можете настроить загрузчик ресурсов для решения проблемы абсолютных и относительных путей. можно обратиться к приведенному выше примеру проекта.
Настройки дополнительных параметров задачи
Параметры, настроенные в liquibase.activities, являются параметрами, которые необходимо настроить.Некоторым командам могут потребоваться дополнительные параметры.В этом случае вам необходимо использовать командную строку для динамического создания параметров
Если вы используете оболочку gradle, вам нужно использовать gradlew для выполнения команды
Пример
//多个参数用空格隔开,命令参数可参考文章下方附录
gradlew <任务名> -PliquibaseCommandValue="--xx=yy --aa=bb"
Опыт
Не изменяйте базу данных вручную
Не изменяйте оригиналchangesetиспользовать новыйchangesetмодифицировать
Регулярная пометка для легкого отката
Использование liquibase в разрабатываемом проекте
Идеи использования: экспортировать предыдущие изменения базы данных (такие как структура таблицы, хранимые процедуры, основные данные), а затем использовать liquibase для управления изменениями и использовать базу данных liquibase для управления изменениями в будущем)
шаг 1: экспортировать изменения в базу данных
Можно экспортировать с помощью инструментов базы данных какsqlфайл или используйте инструмент командной строки liquibasegenerateChangelogКоманда Экспорт XML-файла изменений
Шаг 2: Используйте liquibase для управления изменениями в базе данных
Поскольку соответствующие изменения уже существуют в базе данных, необходимо только пометить экспортированные записи об изменениях как выполненные.
Этот шаг можно выполнить с помощью командной строки liquibase в соответствии сchangelogSyncилиchangelogSyncSQLРазница между этими двумя командами заключается в том, что одна будет напрямую изменять базу данных, одна не будет напрямую изменять базу данных, а другая сгенерирует соответствующий sql, который необходимо вручную указать на sql
приложение команды liquibase
| имя команды | описание команды |
|---|---|
| update | Обновить базу до актуальной версии |
| updateSQL | Напишите SQL для обновления базы данных до текущей версии или STDOUT |
| updateCount <num> | Применить следующее NUM изменение к базе данных |
| updateCountSQL <num> | Напишите SQL, чтобы применить следующее NUM-изменение к базе данных. |
| updateToTag <tag> | Обновите базу данных до набора изменений с указанным тегом |
| updateToTagSQL <tag> | Записать SQL (в стандартный вывод) в набор изменений с указанным тегом |
| rollback <tag> | Откат БД до состояния указанного тега был |
| rollbackSQL <tag> | Создайте sql, который откатывает базу данных до указанной метки. |
| rollbackToDate <date/time> | Откат базы данных до состояния на указанную дату/время был. Формат даты: гггг-ММ-дд 'ЧЧ: мм: сс |
| rollbackToDateSQL <date/time> | Напишите SQL для отката базы данных до состояния данной версии даты/времени в STDOUT. |
| rollbackCount <value> | Откатить последний набор изменений |
| rollbackCountSQL <value> | Напишите SQL для отката последнего набора изменений |
| futureRollbackSQL | Напишите SQL, чтобы вернуть базу данных в текущее состояние после изменений в журнале журнала. |
| futureRollbackSQL <value> | Напишите SQL, чтобы откатить базу данных до ее текущего состояния после завершения изменений |
| futureRollbackFromTagSQL <tag> | Напишите (в стандартный вывод) SQL, чтобы откатить базу данных до ее текущего состояния после изменений. |
| updateTestingRollback | Обновите базу данных и снова откатите изменения. Для тестирования поддержки отката |
| generateChangeLog | Напишите XML журнала изменений, чтобы скопировать текущее состояние базы данных в стандартный вывод. |
| snapshot | Записать текущее состояние базы данных в стандартный вывод |
| snapshotReference | Записывает текущее состояние базы данных referenceUrl в стандартный вывод. |
| Diff Commands | команда сравнения баз данных |
| diff [diff parameters] | команда сравнения баз данных |
| diffChangeLog [diff parameters] | Журнал сравнения баз данных |
| Documentation Commands | команда документа |
| dbDoc <outputDirectory> | Создание документации в стиле javadoc на основе текущей базы данных и журнала изменений. |
| Maintenance Commands | техническое обслуживание |
| tag <tag string> | Пометьте текущую базу данных для легкого отката в будущем |
| tagExists <tag string> | Проверьте, существует ли соответствующая метка |
| status [--verbose] | Результатом является количество строк, в которых был выполнен набор изменений. |
| unexpectedChangeSets[--verbose] | Вывести количество строк набора изменений, которые не существуют локально |
| validate | Проверьте журнал изменений на наличие ошибок |
| calculateCheckSum <id> | Проверьте значение контрольной суммы указанного идентификатора набора изменений Форматfilepath::id::author
|
| clearCheckSums | Удалить все сохраненные контрольные суммы из журнала базы данных |
| changelogSync | Отметить все выполненные изменения |
| changelogSyncSQL | Генерировать выполненные изменения, отмеченные sql, и выводить их на стандартный вывод. |
| markNextChangeSetRan | Отметить следующее изменение как реализованное |
| markNextChangeSetRanSQL | Генерировать sql, помечая следующее изменение как выполненное и выводить на стандартный вывод |
| listLocks | Список блокировок базы данных Liquibase |
| releaseLocks | Снимите все блокировки базы данных Liquibase |
| dropAll | Удалить таблицу базы данных (использовать с осторожностью!) |
Обязательные параметры
| параметр | описывать |
|---|---|
| --changeLogFile=<path and filename> | Изменить путь к файлу журнала |
| --username=<value> | имя пользователя базы данных |
| --password=<value> | пароль базы данных |
| --url=<value> | URL-адрес базы данных |
необязательные параметры
| параметр | описывать |
|---|---|
| --classpath=<value> | Classpath содержит файлы миграции и драйвер JDBC. |
| --driver=<jdbc.driver.ClassName> | Имя класса драйвера базы данных |
| --databaseClass=<database.ClassName> | Настройте liquibase.database. Использование реализации базы данных |
| --propertyProviderClass=<properties.ClassName> | Реализация пользовательского свойства для использования |
| --defaultSchemaName=<name> | Схема базы данных по умолчанию для использования |
| --contexts=<value> | Измените контекст для выполнения |
| --labels=<expression> | Выражение, определяющее набор изменений метки для выполнения |
| --defaultsFile=</path/to/file.properties> | файл со значениями параметров по умолчанию (по умолчанию: ./liquibase.properties) |
| --delimiter=<string> | Используется с командой executeSql для установки строки, используемой для разбиения файлов, содержащих несколько инструкций. |
| --driverPropertiesFile=</path/to/file.properties> | Файл, который задает настраиваемые свойства создаваемого соединения JDBC. |
| --changeExecListenerClass=<ChangeExecListener.ClassName> | Пользовательское изменение реализации Execlistener для использования |
| --changeExecListenerPropertiesFile=</path/to/file.properties> | Свойства для пользовательских слушателей изменений Exec |
| --liquibaseCatalogName=<name> | имя каталога с таблицей liquibase |
| --liquibaseSchemaName=<name> | имя схемы с таблицей liquibase |
| --databaseChangeLogTableName=<name> | Имя таблицы Liquibase ChangeLogtable (по умолчанию: DATABASECHANGELOG). |
| --databaseChangeLogLockTableName=<name> | Имя таблицы Liquibase ChangeLogLock (по умолчанию: DATABASECHANGELOGLOCK) |
| --liquibaseSchemaName=<name> | имя схемы с таблицей liquibase |
| --includeSystemClasspath=<true|false> | Включить системный путь к классам в путь к классам Liquibase (по умолчанию: true) |
| --promptForNonLocalDatabase=<true|false> | Запрашивать, если база данных не является локальной (по умолчанию: false) |
| --logLevel=<level> | Уровень журнала выполнения (отладка, информация, предупреждение, критический, выкл.) |
| --logFile=<file> | журнальный файл |
| --currentDateTimeFunction=<value> | Переопределяет текущую функцию datetime, используемую в SQL. Работает с неподдерживаемыми базами данных |
| --outputDefaultSchema=<true|false> | Если значение равно true, ссылка на объект SQL включает имя схемы, даже если это схема по умолчанию. Значение по умолчанию верно |
| --outputDefaultCatalog=<true|false> | Если задано значение true, ссылка на объект SQL включает имя каталога, даже если это каталог по умолчанию. Значение по умолчанию верно |
| --outputFile=<file> | Файл, в который записываются выходные данные для команд, записывающих выходные данные, например updateSQL. Если не указано, пишет в sysout. |
| --help | распечатать это сообщение |
| --version | распечатать информацию об этой версии |
Команда diff должна передавать параметры
| параметр | описывать |
|---|---|
| --referenceUsername=<value> | Сравните имена пользователей базы данных |
| --referencePassword=<value> | Сравните пароли к базам данных |
| --referenceUrl=<value> | Сравните URL базы данных |
Дополнительные параметры для команды diff
| параметр | описывать |
|---|---|
| --defaultCatalogName=<name> | Каталог базы данных по умолчанию |
| --defaultSchemaName=<name> | Схема базы данных по умолчанию |
| --referenceDefaultCatalogName=<name> | Каталог эталонной базы данных для использования в базе данных сравнения |
| --referenceDefaultSchemaName=<name> | Сравните схему базы данных, которая будет использоваться базой данных |
| --schemas=<name1,name2> | Схема базы данных, включающая объекты из сравнения |
| --referenceSchemas=<name1,name2> | Ссылается на схему базы данных, чтобы содержать объекты из сравнения, требуется только в том случае, если отличается от --schema |
| --outputSchemaAs=<name1,name2> | В diffChangeLog/generateChangeLog используйте эти имена как schemaName вместо настоящего имени. |
| --includeCatalog=<true|false> | Если true, по умолчанию для каталога установлено значение false в сгенерированном наборе изменений. |
| --includeSchema=<true|false> | Если true, схема будет включена в сгенерированные changeSetsDefaults. |
| --referenceDriver=<jdbc.driver.ClassName> | Имя класса драйвера ссылочной базы данных |
| --dataOutputDirectory=DIR | Вывести данные в заданном каталоге в формате CSV |
| --diffTypes | Список типов различий, включая журналы изменений, разделенные запятой. |
Официальная справочная документацияWoohoo. Перейдите на страницу base.org/document ATI…
Справочник по командам Gradle
| параметр | описывать |
|---|---|
| -?, -h, --help | показать помощь - - ..... |
| -a, --no-rebuild | Игнорировать «зависимости проекта», предполагая, что веб-модуль зависит от базы, после использования этого параметра базовый модуль не будет собран, даже если код базового модуля будет обновлен (примечание: если базовый модуль чистый, то добавление этого параметр не будет построен Встраивание базовой зависимости в проект эквивалентно игнорированию базовой зависимости). |
| -b, --build-file | Выполнить указанный файл *.gradle.По умолчанию сначала будет искаться файл build.gradle в текущем каталоге, либо будет искаться файл build.gradle в подпроекте в соответствии с конфигурацией в settings.gradle.Если параметр -b используется, файл настроек будет игнорироваться. |
| -c, --settings-file | Выполнить указанный файл *.gralde, настройки по умолчанию.gradle. |
| --console | Указывает тип вывода на консоль, необязательные значения: «обычный», «авто» (по умолчанию), «богатый». программа сборки и запуск цветного и расширенного вывода текста, когда консоль связана, или создание обычного текста, если она не связана; расширенный начальный цвет и вывод форматированного текста, игнорируя, связана ли программа сборки с консолью, если нет связанного вывода сборки, он будет выводить управляющие символы ANSI для создания расширенного текстового вывода. |
| --no-color | Отмените эффект окраски консоли, но этот параметр устарел, вместо него рекомендуется использовать --console=plain. |
| --continue | Игнорируйте ошибку и продолжайте сборку, а затем завершите сборку после ошибки по умолчанию. |
| -d, --debug | Укажите уровень вывода журнала как отладочный, чтобы распечатать общую информацию о стеке. |
| -q, --quiet | Указывает, что форма вывода журнала находится в тихом режиме, печатаются только ошибки. |
| -i, --info | Укажите уровень журнала как информацию. |
| -S, --full-stacktrace | Укажите уровень журнала как full-stacktrace, чтобы распечатать полную информацию об исключении стека, которая слишком длинна и слишком много. |
| -s, --stacktrace | Указание уровня журнала как stacktrace распечатает всю информацию об исключении стека. |
| -D, --system-prop | Свойство -D передается JVM, которая запустила Gradle, и используется JVM как системное свойство (например: -Dname=tom). |
| -P, --project-prop | Настройка параметров проекта Gradle будет загружена непосредственно в объект домена Gradle (например: -Pversion=1.2). |
| --configure-on-demand | В этом цикле сборки настраиваются только релевантные проекты. Это означает более быструю сборку для больших мультибилдов. [инкубация] |
| --daemon | Выполните сборку с помощью демона Gradle или запустите его, если демона нет. |
| --no-daemon | Отключает демон и не использует демон для выполнения сборок. |
| --stop | Если демон существует, убейте его. |
| --foreground | Запустите демон как передний план. |
| -g, --gradle-user-home | Укажите заданный по умолчанию домашний каталог пользователя Gradle.По умолчанию используется «каталог пользователя/.gradle». |
| --gui | Запустите программу графического интерфейса Gradle GUI. |
| -I, --init-script | Выполнить указанный скрипт инициализации, который будет выполняться перед сборкой, он будет искать файл init.gradle в порядке текущей директории, USER_HOME/.gradle/, USER_HOME/.gradle/init.d/, GRADLE_HOME/init. д/ |
| -m, --dry-run | Смоделируйте процесс выполнения задачи и распечатайте процесс, а не фактическое выполнение, просто чтобы вы знали, какие шаги будут выполнены. |
| --max-workers | Указывает, сколько ядер ЦП использовать для выполнения сборки/ |
| --offline | Соберите проект в автономном режиме, конечно, если + есть в вашем gav, остерегайтесь сбоя сборки. |
| -p, --project-dir | Укажите каталог, в котором находится скрипт build.gradle, по умолчанию это текущий каталог.После того, как вы можете указать каталог подпроекта через этот параметр, файл build.gradle в указанном каталоге будет выполняться по умолчанию. |
| --parallel | работать в параллельном режиме |
| --parallel-threads | Количество потоков, используемых для параллельного выполнения сборки, но оно устарело. Вместо него рекомендуется использовать --parallel --max-workers. |
| --profile | Сохраняет отчет о выполнении в |
| --project-cache-dir | Укажите каталог кэша проекта, по умолчанию используется папка .gradle в корневом каталоге проекта. |
| --recompile-scripts | Кэшированные скрипты отбрасываются, затем перекомпилируются и сохраняются в кеше.Таким образом вы можете заставить Gradle регенерировать кеш. |
| --refresh-dependencies | Зависит от принудительного обновления, пренебрегая повторной загрузкой кеша |
| --rerun-tasks | Принудительное повторное выполнение задач, игнорирование кеша задач, добавочные сборки по умолчанию |
| -t, --continuous | Непрерывный режим сборки, после принятия этого режима все изменения файла сборки будут отслеживаться, и файл будет автоматически перестроен после изменений. |
| -u, --no-search-upward | Файл settings.gradle в родительском каталоге не применяется.Если этот элемент не добавить, то settings.gradle родительского каталога перезапишет конфигурацию в подкаталоге. |
| -v, --version | Вывести информацию о версии Gradle. |
| -x, --exclude-task | Исключение задачи, пропустить выполнение указанной задачи. |