Quarkus 编译本机因 Flyway 失败

问题描述 投票:0回答:2

我有这个错误,但我找不到任何有关此的信息:

2022-09-20 09:48:36,035 ERROR [io.qua.run.Application] (main) Failed to start application (with profile prod): java.lang.IllegalStateException: 'org.flywaydb.core.internal.scanner.Scanner' is never used in Quarkus
        at org.flywaydb.core.internal.scanner.Scanner.<init>(Scanner.java:27)
        at org.flywaydb.core.FlywayExecutor.createResourceAndClassProviders(FlywayExecutor.java:252)
        at org.flywaydb.core.FlywayExecutor.execute(FlywayExecutor.java:135)
        at org.flywaydb.core.Flyway.migrate(Flyway.java:124)

我非常确定sql迁移文件包含在带有参数“quarkus.native.resources.includes=db/migration/**”的编译中。

有人知道发生了什么吗?

版本:
版本信息:“GraalVM 22.1.0 Java 11 CE”
夸克斯 2.10.1

使用maven编译:

mvn clean package -Dnative

我还使用 Quarkus 2.12.2.Final 和 2.13.0.CR1 版本进行了测试,结果相同。

java quarkus flyway graalvm
2个回答
0
投票

我遇到了类似或可能相同的问题,并在这里找到了解决方案https://github.com/quarkusio/quarkus/issues/10716#issuecomment-1069943206。因此,在我的问题中,我以编程方式创建一个 Flyway 实例

(Flyway.flyway())
并调用
migrate()
。这个实例化对我来说是个问题。通过
arc
检索它解决了问题。由于这是搜索此问题时要找到的第 1 个线程,因此我将其留在这里。

QuarkusPathLocationScanner.setApplicationMigrationFiles(files);
DataSource ds = Flyway.configure().dataSource("jdbc:" + datasourceUrl, datasourceUsername, datasourcePassword).getDataSource();
FlywayContainerProducer flywayProducer = Arc.container().instance(FlywayContainerProducer.class).get();
 FlywayContainer flywayContainer = flywayProducer.createFlyway(ds, "<default>", true, true);
 Flyway flyway = flywayContainer.getFlyway();
 flyway.migrate();
    

0
投票

我在我的环境中使用以下配置(并且它有效;D) 我只是尝试使用不同的数据源进行迁移

quarkus.datasource.db-kind = postgresql
quarkus.datasource.username = postgres
quarkus.datasource.password = postgres
quarkus.datasource.reactive.url = vertx-reactive:postgresql://localhost:5432/mydb
quarkus.datasource.jdbc = false

quarkus.flyway."flyway-migration".active = true
quarkus.flyway."flyway-migration".migrate-at-start = true
quarkus.datasource."flyway-migration".db-kind = postgresql
quarkus.datasource."flyway-migration".jdbc.url = jdbc:postgresql://localhost:5432/mydb
quarkus.datasource."flyway-migration".username = postgres
quarkus.datasource."flyway-migration".password = postgres
© www.soinside.com 2019 - 2024. All rights reserved.