Как заставить maven использовать библиотеку JAXB, отличную от библиотеки JDK - PullRequest
5 голосов
/ 20 октября 2011

Я использую Java 1.6.0_14, который включает в себя реализацию аннотации javax.xml.bind.annotation.XmlElement.Однако тот, что в JDK, применяется только к методу и полю.

Я обнаружил, что jaxb-api.jar версии 2.2.3 разрешает это и для параметра, поэтому я хочу использовать эту версию.

Проблема в том, что я не могу понять, как заставить maven использовать его вместо того, который используется в JDK, чтобы при написании кода он не жаловался, что аннотацияв неверном месте.

Есть предложения?

Ответы [ 2 ]

4 голосов
/ 21 июня 2013

Вы должны использовать одобренный механизм переопределения Java.Я получил это непосредственно с веб-сайта Apache CXF.

JAXB - это привязка данных по умолчанию для CXF.Если вы не укажете одну из других привязок данных в своей конфигурации Spring или через API, вы получите JAXB.В версиях CXF, начиная с 2.3.x, используется JDK7 по умолчанию JAXB 2.2, однако пользователям Maven, работающим на JDK 6, потребуется использовать механизм отмены поддержки Java для использования JAXB 2.2 вместо JAXB 2.1.

http://cxf.apache.org/docs/jaxb.html первый абзац вверху.Вы в основном загружаете новую версию jaxb, а затем указываете JRE / JDK загрузить ее вместо реализации по умолчанию, с которой она поставляется.

2 голосов
/ 20 октября 2011

Включите явную зависимость в вашем POM:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2.3</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...