/ / arquillianとflyway:移行は実行されません - java-ee、flyway、jboss-arquillian

arquillianとflyway:移行は実行されません - java-ee、flyway、jboss-arquillian

私は組み込みシステムでarquillianテストを実行していますワイルドフラワー。すべての移行スクリプト、Integratorクラス(FlyWayが設定されている)、およびすべてのフライウェイパッケージ(POMファイルから)は、.warファイル(埋め込みワイルドフックに展開されています)にshrinkwrapに含まれていますが、

これには何らかの理由がありますか?これは主に動作しないのですか、何かを逃しましたか?

私が達成したいのは、arquillianによって実行される自動化されたテストが、同じ移行スクリプトを使用する生産的なデータベースと同じスキームを持つインメモリデータベースをセットアップすることです。

編集:as ytg 私はIntegratorクラスを追加します。ただし、このコードはArquillianテストでは入力されません。私がintegrateメソッドの上にブレークポイントを設定すると、決してヒットしません。どうして?

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
}
}

回答:

回答№1は0

長い間、私はこの問題を解決しようとしました。そしてそれは簡単でした:私はファイルを追加することができませんでした META-INF/services/org.hibernate.integrator.spi.Integrator インテグレータクラスを格納する必要があります。このファイルを.warに追加する必要がありました。 ShrinkWrap 作成します。