You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache CXF依赖树随JDK版本变化的原因探究

Apache CXF在不同JDK版本下依赖树差异的原因解析

你观察到的CXF 3.5.5在JDK 8和JDK 16下依赖树的差异,核心原因并非CXF自身配置了JDK相关的Maven Profile或Enforcer插件,而是Maven依赖解析机制结合JDK版本变化、传递依赖的条件激活共同作用的结果,以下具体拆解:

1. JDK版本升级导致的API缺失

JDK 9及以后版本(包括JDK 16)移除了原JDK 8中自带的Java EE相关API(如JTA、JAX-WS、JAXB等,这些原属于rt.jar)。在JDK 8环境下,Maven无需引入这些API的依赖,因为JDK本身提供;但在JDK 16环境下,这些API不再内置,因此依赖链中的组件会自动引入对应的兼容实现或API包。

2. 传递依赖的条件激活

你看到的geronimo-jta_1.1_spec这类依赖,是通过CXF的传递依赖链引入的:CXF依赖的某个组件(如Jakarta EE相关的API或实现库)的POM文件中,配置了基于JDK版本的激活规则。例如:

  • 部分库会通过Maven Profile的<activation>节点,指定当JDK版本≥9时,自动激活并引入缺失的Java EE API依赖;
  • 或者通过maven-compiler-plugin的source/target参数,结合依赖的optional属性,在高JDK版本下自动解析并引入这些依赖。

以geronimo-jta_1.1_spec为例,它是JTA 1.1规范的实现,JDK 8中JTA API由JDK内置,无需额外依赖;但JDK 16移除了该API,因此CXF依赖的某个组件(比如Jakarta EE相关的核心库)会在高JDK环境下自动引入这个规范实现,确保代码编译和运行的兼容性。

3. 验证依赖来源的方法

如果你想确认具体是哪个依赖引入了geronimo-jta_1.1_spec,可以在JDK 16环境下执行以下Maven命令,追踪依赖链:

mvn dependency:tree -Dverbose -Dincludes=org.apache.geronimo.specs:geronimo-jta_1.1_spec

该命令会输出这个依赖的完整传递路径,帮你定位到触发它的上游依赖。


附:JDK 8 vs JDK 16依赖树差异

JDK 8依赖树

[INFO] org.apache.cxf:cxf-core:bundle:3.5.5
[INFO] +- junit:junit:jar:4.13.2:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:2.2:test
[INFO] |     \- org.hamcrest:hamcrest:jar:2.2:test
[INFO] +- org.easymock:easymock:jar:5.0.1:test
[INFO] |  \- org.objenesis:objenesis:jar:3.3:test
[INFO] +- jakarta.validation:jakarta.validation-api:jar:2.0.2:compile (optional) 
[INFO] +- org.ow2.asm:asm:jar:9.4:compile (optional) 
[INFO] +- xml-resolver:xml-resolver:jar:1.2:compile (optional) 
[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.5:compile
[INFO] |  +- org.glassfish.jaxb:txw2:jar:2.3.5:compile
[INFO] |  +- com.sun.istack:istack-commons-runtime:jar:3.0.12:compile
[INFO] |  \- com.sun.activation:jakarta.activation:jar:1.2.2:runtime
[INFO] +- org.slf4j:slf4j-api:jar:1.7.36:compile (optional) 
[INFO] +- org.slf4j:slf4j-jdk14:jar:1.7.36:test
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.36:test
[INFO] +- cglib:cglib-nodep:jar:3.3.0:provided
[INFO] +- com.fasterxml.woodstox:woodstox-core:jar:6.4.0:compile
[INFO] |  \- org.codehaus.woodstox:stax2-api:jar:4.2.1:compile
[INFO] +- org.springframework:spring-beans:jar:5.3.22:compile (optional) 
[INFO] |  \- org.springframework:spring-core:jar:5.3.22:compile (optional) 
[INFO] |     \- org.springframework:spring-jcl:jar:5.3.22:compile (optional) 
[INFO] +- org.springframework:spring-context:jar:5.3.22:compile (optional) 
[INFO] |  \- org.springframework:spring-expression:jar:5.3.22:compile (optional) 
[INFO] +- org.springframework:spring-aop:jar:5.3.22:provided (optional) 
[INFO] +- org.apache.aries.blueprint:org.apache.aries.blueprint.core:jar:1.10.3:provided (optional) 
[INFO] |  +- org.apache.aries.blueprint:org.apache.aries.blueprint.api:jar:1.0.1:provided (optional) 
[INFO] |  +- org.apache.aries.quiesce:org.apache.aries.quiesce.api:jar:1.0.0:provided (optional) 
[INFO] |  \- org.apache.aries.proxy:org.apache.aries.proxy.api:jar:1.1.1:provided (optional) 
[INFO] +- org.apache.aries.blueprint:blueprint-parser:jar:1.6.1:provided (optional) 
[INFO] +- org.apache.ws.xmlschema:xmlschema-core:jar:2.3.0:compile
[INFO] +- com.sun.mail:jakarta.mail:jar:1.6.7:test
[INFO] +- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.18:compile (optional) 
[INFO] +- org.osgi:org.osgi.core:jar:6.0.0:provided
[INFO] +- org.osgi:osgi.cmpn:jar:6.0.0:provided (optional) 
[INFO] +- net.java.dev.msv:msv-core:jar:2013.6.1:provided (optional) 
[INFO] |  +- net.java.dev.msv:xsdlib:jar:2013.6.1:provided (optional) 
[INFO] |  |  \- relaxngDatatype:relaxngDatatype:jar:20020414:provided (optional) 
[INFO] |  \- com.sun.xml.bind.jaxb:isorelax:jar:20090621:provided (optional) 
[INFO] +- org.springframework.osgi:spring-osgi-io:jar:1.2.1:provided (optional) 
[INFO] +- org.springframework.osgi:spring-osgi-core:jar:1.2.1:provided (optional) 
[INFO] +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:compile
[INFO] |  \- jakarta.activation:jakarta.activation-api:jar:1.2.2:compile
[INFO] \- xerces:xercesImpl:jar:2.12.2:test
[INFO]    \- xml-apis:xml-apis:jar:1.4.01:test

JDK 16依赖树

[INFO] org.apache.cxf:cxf-core:bundle:3.5.5
[INFO] +- junit:junit:jar:4.13.2:test
[INFO] |  \- org.hamcrest:hamcrest-core:jar:2.2:test
[INFO] |     \- org.hamcrest:hamcrest:jar:2.2:test
[INFO] +- org.easymock:easymock:jar:5.0.1:test
[INFO] |  \- org.objenesis:objenesis:jar:3.3:test
[INFO] +- jakarta.validation:jakarta.validation-api:jar:2.0.2:compile (optional) 
[INFO] +- org.ow2.asm:asm:jar:9.4:compile (optional) 
[INFO] +- xml-resolver:xml-resolver:jar:1.2:compile (optional) 
[INFO] +- org.glassfish.jaxb:jaxb-runtime:jar:2.3.5:compile
[INFO] |  +- org.glassfish.jaxb:txw2:jar:2.3.5:compile
[INFO] |  \- com.sun.istack:istack-commons-runtime:jar:3.0.12:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.7.36:compile (optional) 
[INFO] +- org.slf4j:slf4j-jdk14:jar:1.7.36:test
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.36:test
[INFO] +- cglib:cglib-nodep:jar:3.3.0:provided
[INFO] +- com.fasterxml.woodstox:woodstox-core:jar:6.4.0:compile
[INFO] |  \- org.codehaus.woodstox:stax2-api:jar:4.2.1:compile
[INFO] +- org.springframework:spring-beans:jar:5.3.22:compile (optional) 
[INFO] |  \- org.springframework:spring-core:jar:5.3.22:compile (optional) 
[INFO] |     \- org.springframework:spring-jcl:jar:5.3.22:compile (optional) 
[INFO] +- org.springframework:spring-context:jar:5.3.22:compile (optional) 
[INFO] |  \- org.springframework:spring-expression:jar:5.3.22:compile (optional) 
[INFO] +- org.springframework:spring-aop:jar:5.3.22:provided (optional) 
[INFO] +- org.apache.aries.blueprint:org.apache.aries.blueprint.core:jar:1.10.3:provided (optional) 
[INFO] |  +- org.apache.aries.blueprint:org.apache.aries.blueprint.api:jar:1.0.1:provided (optional) 
[INFO] |  +- org.apache.aries.quiesce:org.apache.aries.quiesce.api:jar:1.0.0:provided (optional) 
[INFO] |  \- org.apache.aries.proxy:org.apache.aries.proxy.api:jar:1.1.1:provided (optional) 
[INFO] +- org.apache.aries.blueprint:blueprint-parser:jar:1.6.1:provided (optional) 
[INFO] +- org.apache.ws.xmlschema:xmlschema-core:jar:2.3.0:compile
[INFO] +- com.sun.mail:jakarta.mail:jar:1.6.7:test
[INFO] +- com.sun.xml.fastinfoset:FastInfoset:jar:1.2.18:compile (optional) 
[INFO] +- org.osgi:org.osgi.core:jar:6.0.0:provided
[INFO] +- org.osgi:osgi.cmpn:jar:6.0.0:provided (optional) 
[INFO] +- net.java.dev.msv:msv-core:jar:2013.6.1:provided (optional) 
[INFO] |  +- net.java.dev.msv:xsdlib:jar:2013.6.1:provided (optional) 
[INFO] |  |  \- relaxngDatatype:relaxngDatatype:jar:20020414:provided (optional) 
[INFO] |  \- com.sun.xml.bind.jaxb:isorelax:jar:20090621:provided (optional) 
[INFO] +- org.springframework.osgi:spring-osgi-io:jar:1.2.1:provided (optional) 
[INFO] +- org.springframework.osgi:spring-osgi-core:jar:1.2.1:provided (optional) 
[INFO] +- jakarta.xml.bind:jakarta.xml.bind-api:jar:2.3.3:compile
[INFO] |  \- jakarta.activation:jakarta.activation-api:jar:1.2.2:compile
[INFO] +- xerces:xercesImpl:jar:2.12.2:test
[INFO] +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] +- jakarta.xml.ws:jakarta.xml.ws-api:jar:2.3.3:compile
[INFO] +- jakarta.jws:jakarta.jws-api:jar:2.1.0:compile
[INFO] +- jakarta.xml.soap:jakarta.xml.soap-api:jar:1.4.2:compile
[INFO] +- com.sun.activation:jakarta.activation:jar:1.2.2:compile
[INFO] +- com.sun.xml.messaging.saaj:saaj-impl:jar:1.5.3:runtime
[INFO] |  \- org.jvnet.staxex:stax-ex:jar:1.8.3:runtime
[INFO] +- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1.1:compile
[INFO] \- org.jacorb:jacorb:jar:3.9:test
[INFO]    \- org.jacorb:jacorb-omgapi:jar:3.9:test

JDK 16新增依赖

[INFO] +- jakarta.annotation:jakarta.annotation-api:jar:1.3.5:compile
[INFO] +- jakarta.xml.ws:jakarta.xml.ws-api:jar:2.3.3:compile
[INFO] +- jakarta.jws:jakarta.jws-api:jar:2.1.0:compile
[INFO] +- jakarta.xml.soap:jakarta.xml.soap-api:jar:1.4.2:compile
[INFO] +- com.sun.activation:jakarta.activation:jar:1.2.2:compile
[INFO] +- com.sun.xml.messaging.saaj:saaj-impl:jar:1.5.3:runtime
[INFO] |  \- org.jvnet.staxex:stax-ex:jar:1.8.3:runtime
[INFO] +- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1.1:compile
[INFO] \- org.jacorb:jacorb:jar:3.9:test
[INFO]    \- org.jacorb:jacorb-omgapi:jar:3.9:test

内容的提问来源于stack exchange,提问作者Raghu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:57:01