Ошибка выдачи обновлений Liquibase при параллельной работе - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь сгенерировать DDL скрипты для моих JPA сущностей, и это работает просто отлично.Я добавляю модульный тест для того же, который выдает мне эту ошибку

Caused by: liquibase.exception.ServiceNotFoundException: Could not find unique implementation of liquibase.executor.Executor.  Found 0 implementations
at liquibase.servicelocator.ServiceLocator.findClass(ServiceLocator.java:185)
at liquibase.servicelocator.ServiceLocator.newInstance(ServiceLocator.java:211)
... 21 more

Мой testng тест выглядит следующим образом

    @DataProvider(parallel = true)
    public Object[][] listToArrays() {

    File f=new File(PropertyReader.getInstance().getProperty("path");
    File[] files=f.listFiles();

    List<MetaData> list =prepare(files);


        Object[][] array = new Object[list.size()][1];
        for (int i = 0; i < list.size(); i++) {
        array[i][0] = list.get(i);
         }
    return array;
    }

    @Test(dataProvider = "listToArrays")
    public void test(MetaData s) throws ScriptGenerationException, 
    UnsupportedEncodingException, LiquibaseException, IOException {

        String[] rdbmsTypes=new String[] 
                            {"MSSQL","POSTGRES","ORACLE","MYSQL"};

        for (String rdbmsType : rdbmsTypes) {

                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);

    Writer w=getOutputWriter();

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

    w.close();

        }

    }

В чем может быть причина проблемы?

Примечание. Я использую Liquibase только в автономном режиме.

...