如何解决wildfly-elytron覆盖Jackson依赖的问题?
依赖冲突问题:WildFly Elytron内置Jackson覆盖自定义依赖版本
依赖结构(伪Gradle格式)
- app -- compileOnly(wildfly-elytron) -- implementation(jackson) -- implementation(project(:core)) - core -- implementation(wildfly-elytron)
对应实际依赖坐标:
wildfly-elytron:org.wildfly.security:wildfly-elytron:1.15.16.Finaljackson(原版本):com.fasterxml.jackson.core:jackson-annotations:2.13.4
问题详情
我需要将Jackson升级到2.16.2版本,以使用JsonTypeInfo.Id.SIMPLE_NAME特性,但修改Gradle依赖版本并同步后,app模块的源码并未识别到版本变更。反而在IntelliJ中,@JsonTypeInfo注解被指向了wildfly-elytron包中的类。
下载wildfly-elytron的JAR包检查后发现,该包直接内置了Jackson的类文件,并非通过传递依赖引入,这些内置类覆盖了我引入的Jackson 2.16.2版本。
已尝试的无效操作
- 尝试通过依赖排除规则移除Jackson:
此操作无效,因为Jackson是内置在elytron包内的,不是传递依赖,排除规则无法生效。compileOnly(project(core)) { exclude group: "org.wildfly.security" } compileOnly (elytron) { exclude group: "com.fasterxml.jackson.core" } - 调整app模块中依赖的声明顺序,试图让Jackson 2.16.2在类路径中优先加载,同样没有效果。
不可变更的限制
- app模块必须使用wildfly-elytron中的
SecurityDomain,无法移除该依赖; - core模块完全无法修改,且它会传递引入wildfly-elytron依赖。
恳请提供可行的解决思路。
内容的提问来源于stack exchange,提问作者Ben R.
相关产品推荐
相关产品推荐

