#spring #jpa #liquibase
#spring #jpa #liquibase
Вопрос:
Я новичок в Liquibase, и я узнал, что два режима diff
и diffChangeLog
используют целевую и базовую (ссылочные) базы данных в противоположном направлении.
Using "diff" will show the difference going from 'base (reference)' -> 'target' which makes sense.
While "diffChangeLog" outputs the difference going from 'target' to 'base (reference)'.
Я запустил цель maven liquibase:diffChangeLog
, но я получаю следующую ошибку
[ERROR] Could not find goal 'diffChangeLog' in plugin
org.liquibase:liquibase-maven-plugin:3.5.1 among available goals dropAll,
rollback, clearCheckSums, updateTestingRollback, changelogSync, updateSQL,
migrateSQL, generateChangeLog, dbDoc, status, listLocks, changelogSyncSQL,
releaseLocks, migrate, tag, diff, rollbackSQL, futureRollbackSQL, update,
help -> [Help 1]
Что я сделал не так? Как я могу работать liquibase:diffChangeLog
как maven?
Ответ №1:
diff
( liquibase:diff
) maven goal
используется для нахождения разницы между состояниями БД.
diffChangeLog
является аргументом для command line
выполнения Liquibase
операции с использованием command line tool
. Цель maven не вызывается liquibase:diffChangeLog
Внутренне код выглядит следующим образом
if ("diff".equalsIgnoreCase(this.command)) {
CommandLineUtils.doDiff(createReferenceDatabaseFromCommandParams(this.commandParams, fileOpener), database, StringUtils.trimToNull(this.diffTypes), finalSchemaComparisons);
}
else if ("diffChangeLog".equalsIgnoreCase(this.command)) {
CommandLineUtils.doDiffToChangeLog(this.changeLogFile, createReferenceDatabaseFromCommandParams(this.commandParams, fileOpener), database, diffOutputControl, StringUtils.trimToNull(this.diffTypes), finalSchemaComparisons);
}