Quarkus启动时Smallrye依赖覆盖警告问题求助
启动Quarkus 3.8.2服务器时,出现smallrye-common-net-2.2.0.jar被smallrye-common-net-2.1.2.jar覆盖的警告。该项目通过Quarkus CLI默认创建(Gradle构建,包含resteasy-reactive、resteasy-reactive-jackson扩展),未修改任何配置。执行./gradlew dependencyInsight --dependency smallrye-common-net --configuration runtimeClasspath命令后确认,Quarkus BOM将2.2.0版本强制替换为2.1.2。
启动日志
> Task :fk_backend:quarkusDev io.smallrye.common:smallrye-common-net::jar classpath entry /home/funkrusher/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-net/2.2.0/261d912ae8bc78a67df97e69a589f998440f6d1c/smallrye-common-net-2.2.0.jar was overriden with /home/funkrusher/.gradle/caches/modules-2/files-2.1/io.smallrye.common/smallrye-common-net/2.1.2/67e1ba3435161b43d214dc217590ee9f9c496896/smallrye-common-net-2.1.2.jar ... Listening for transport dt_socket at address: 5005
依赖分析结果
io.smallrye.common:smallrye-common-net:2.1.2 \--- io.quarkus.platform:quarkus-bom:3.8.2 \--- runtimeClasspath (requested io.quarkus.platform:quarkus-bom:{strictly 3.8.2}) io.smallrye.common:smallrye-common-net:2.2.0 -> 2.1.2 \--- org.jboss.logmanager:jboss-logmanager:3.0.4.Final +--- io.quarkus.platform:quarkus-bom:3.8.2 | \--- runtimeClasspath (requested io.quarkus.platform:quarkus-bom:{strictly 3.8.2})
解决方法
1. 直接忽略警告(推荐)
这个警告本质是Quarkus BOM的依赖版本管控机制在生效:Quarkus官方会为每个版本的BOM指定经过兼容性测试的依赖版本,自动替换不符合要求的版本来避免潜在的兼容性问题。只要项目运行正常,这个警告不会影响功能,可以直接忽略。
2. 强制指定版本(不推荐,需谨慎)
如果确实需要使用smallrye-common-net:2.2.0,可以在Gradle的build.gradle中添加依赖约束强制指定版本,但要注意这可能破坏Quarkus的依赖兼容性,引发未知问题:
dependencies { constraints { implementation("io.smallrye.common:smallrye-common-net:2.2.0") { because "需要使用指定版本的smallrye-common-net" } } }
修改后执行./gradlew clean build重新构建,检查是否出现其他兼容性错误。
3. 升级Quarkus版本
如果这个版本冲突是Quarkus的已知问题,可以尝试升级到更高版本的Quarkus(比如3.9.x及以上),新版本的BOM可能已经同步了smallrye-common-net的版本,从而消除这个警告。
内容的提问来源于stack exchange,提问作者funkrusher

