Quarkus原生编译Flyway报错:Scanner从未使用,求解决方案
解决Quarkus原生编译启动Flyway Scanner报错问题
针对你遇到的org.flywaydb.core.internal.scanner.Scanner未被Quarkus使用的启动错误,可尝试以下解决方案:
确保引入Quarkus Flyway原生扩展
检查项目pom.xml中是否包含quarkus-flyway依赖,该扩展会自动处理Flyway在GraalVM原生编译中的反射和资源扫描需求:<dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-flyway</artifactId> </dependency>添加反射元数据配置
在src/main/resources/META-INF/native-image/reflect-config.json中添加Scanner类的反射配置,让GraalVM保留该类的构造方法和方法:[ { "name": "org.flywaydb.core.internal.scanner.Scanner", "allDeclaredConstructors": true, "allPublicConstructors": true, "allDeclaredMethods": true, "allPublicMethods": true } ]验证资源包含配置
确认application.properties(或对应prod环境配置文件)中的quarkus.native.resources.includes=db/migration/**配置生效,同时检查迁移文件是否放在src/main/resources/db/migration目录下,路径和命名符合Flyway规范(如V1__Initial_Setup.sql)。强制构建时初始化Scanner类
修改原生编译命令,添加参数强制在构建阶段初始化Scanner类:mvn clean package -Dnative -Dquarkus.native.additional-build-args=--initialize-at-build-time=org.flywaydb.core.internal.scanner.Scanner核对Flyway与Quarkus版本兼容性
检查使用的Flyway版本是否与Quarkus版本兼容,调整Flyway依赖版本以匹配Quarkus集成要求,避免版本冲突导致的扫描异常。
内容的提问来源于stack exchange,提问作者Eusebio
相关产品推荐
相关产品推荐

