Как создать сценарий с использованием Liquibase, не предоставляя подробные сведения о БД, такие как URL, имя пользователя, пароль и драйвер? - PullRequest
1 голос
/ 05 апреля 2019

Я создал сценарии ddl, используя liquibase, введя data base change log.

код выглядит так

    private void toSQL(DatabaseChangeLog d)
        throws DatabaseException, LiquibaseException, UnsupportedEncodingException, IOException {

    FileSystemResourceAccessor fsOpener = new FileSystemResourceAccessor();
    CommandLineResourceAccessor clOpener = new CommandLineResourceAccessor(this.getClass().getClassLoader());
    CompositeResourceAccessor fileOpener = new CompositeResourceAccessor(new ResourceAccessor[] { fsOpener, clOpener });

    Database database = CommandLineUtils.createDatabaseObject(fileOpener, this.url, this.username, this.password, this.driver, 
            this.defaultCatalogName, this.defaultSchemaName, Boolean.parseBoolean(this.outputDefaultCatalog),
            Boolean.parseBoolean(this.outputDefaultSchema), this.databaseClass, 
            this.driverPropertiesFile, this.propertyProviderClass, this.liquibaseCatalogName, 
            this.liquibaseSchemaName, this.databaseChangeLogTableName, this.databaseChangeLogLockTableName);


    Liquibase liquibase=new Liquibase(d, null, database);

    liquibase.update(new Contexts(this.contexts), new LabelExpression(this.labels), getOutputWriter());
}

и мой liquibase.properties выглядит так

url=jdbc\:sqlserver\://server\:1433;databaseName\=test
username=test
password=test@123
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
referenceUrl=hibernate:spring:br.com.company.vacation.domain?dialect=org.hibernate.dialect.SQLServer2008Dialect

Как видите, Liquibase ожидает множество параметров db, таких как url, username, password, driver, которые я не смогу предоставить.

Как мне этого добиться, не указав ни одного параметра. Возможно ли это?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Я немного исследовал операцию liquibase в offline mode.Это выглядит так.

Работа в автономном режиме поддерживает только updateSql, rollbackSQL, tag и tagExists.Он не поддерживает прямую update, diff, or preconditions, так как фактически ничего не обновляется или не проверяется.

Автономная база данных «подключена» с использованием синтаксиса url offline:DATABASE_TYPE?param1=value1&aparam2=value2.

следующего кода будет достаточно

this.url=offline:postgres?param1=value1&aparam2=value2;
this.driver=null;
this.username=null;
this.password=null;

Следовательно, не предоставляя подробности о БД.Оффлайн-адрес может быть составлен из типа магазина.

0 голосов
/ 05 апреля 2019

Нет, это невозможно.Если вы хотите, чтобы liquibase взаимодействовал с базой данных, вы должны указать ей, как подключиться к этой базе данных.

...