如何让maven在JDK中使用不同的JAXB库

我正在使用java 1.6.0_14,其中包含注释javax.xml.bind.annotation.XmlElement的实现。 但是JDK中的那个仅适用于Method和Field。

我发现jaxb-api.jar版本2.2.3也允许这个参数,所以我想使用这个版本。

问题是,我无法弄清楚如何让maven使用这个优先于JDK中的那个,这样当我编写代码时,它不会抱怨注释被用在一个无效的位置。

有什么建议么?

在您的POM中包含显式依赖项:

  javax.xml.bind jaxb-api 2.2.3  

您必须使用Java认可的覆盖机制。 我直接从Apache CXF网站上获得了这个。

JAXB是CXF的默认数据绑定。 如果您没有在Spring配置中或通过API指定其他数据绑定,那么您将获得JAXB。 自2.3.x以来,CXF的发布使用了JDK7默认的JAXB 2.2,但是在JDK 6上运行的Maven用户需要使用Java认可的覆盖机制来使用JAXB 2.2而不是JAXB 2.1。

http://cxf.apache.org/docs/jaxb.html顶部的第一段。 您基本上下载了新版本的jaxb,然后告诉JRE / JDK加载它而不是它附带的默认实现。