arquillian和flyway:迁移不会执行

By simon at 2018-02-28 • 0人收藏 • 80人看过

我在嵌入式野蝇上运行了arquillian测试。即使所有的 迁移脚本,Integrator类(其中FlyWay是设置)和所有 .war文件中包含的flyway软件包(来自POM文件)包含在shrinkwrap中 (这是部署在emb编辑野蝇),没有迁移完成。 这有什么理由吗?这主要不是工作还是我有 错过了事端G? 我喜欢的是由arquillian运行的自动化测试 建立一个具有相同方案的内存数据库作为生产性数据库 使用相同的迁移脚本。 编辑:如下面的ytg问,我添加了Integrator类; howeve这个 代码不在arquillian测试中输入;如果我在上面设置断点 整合的方法,它永远不会被击中。为什么?

import org.flywaydb.core.Flyway;
import org.flywaydb.core.api.MigrationInfo;
import org.hibernate.cfg.Configuration;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.integrator.spi.Integrator;
import org.hibernate.metamodel.source.MetadataImplementor;
import org.hibernate.service.spi.SessionFactoryServiceRegistry;

public class FlywayIntegrator implements Integrator
{
    @Override
    public void integrate(final Configuration configuration,
                          final SessionFactoryImplementor sessionFactoryImplementor,
                          final SessionFactoryServiceRegistry sessionFactoryServiceRegistry)
    {

        System.out.println("Starting Flyway database migrations");

        Flyway flywayEvending = new Flyway();

        // enable this to migrate from the state currently on useqrnow.com
        flywayEvending.setBaselineVersionAsString("0");
        flywayEvending.setBaselineOnMigrate(true);
        flywayEvending.setDataSource(...)

        flywayEvending.setLocations(...);
        for (MigrationInfo i : flywayEvending.info().all())
        {
            System.out.println("migrate task: " + i.getVersion() + " : " + i.getDescription() + " from file: " + i.getScript());
        }
        flywayEvending.migrate();
    }

    @Override
    public void integrate(final MetadataImplementor metadataImplementor, final SessionFactoryImplementor sessionFactoryImplementor, final SessionFactoryServiceRegistry sessionFactoryServiceRegistry)
    {
        // do nothing
    }

    @Override
    public void disintegrate(final SessionFactoryImplementor sessionFactoryImplementor, final SessionFactoryServiceRegistry sessionFactoryServiceRegistry)
    {
        // do nothing
    }
}

2 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

经过很长时间,我重新尝试解决这个问题。这很简单:我 错过了添加我们所拥有的文件META-INF/services/org.hibernate.integrator.spi.Integrator存储集成商 类。我需要将这个文件添加到.war,ShrinkWrap创建。

2018-02-28   #2

经过很长时间,我重新尝试解决这个问题。这很简单:我 错过了添加我们所拥有的文件META-INF/services/org.hibernate.integrator.spi.Integrator存储集成商 类。我需要将这个文件添加到.war,ShrinkWrap创建。

登录后方可回帖

Loading...