Какие артефакты следует использовать для JAXB RI в моем проекте Maven?

Исторически я всегда использовал следующие артефакты JAXB RI в моих проектах Maven:

  • com.sun.xml.bind:jaxb-impl - время выполнения
  • com.sun.xml.bind:jaxb-xjc - Компилятор схемы
  • com.sun.xml.bind:jaxb-jxc - Генератор схемы

Так как примерно версия 2.2.10* эти артефакты теперь описываются как "старые" :

com.sun.xml.bind:jaxb-impl

Старый модуль Runtime JAXB.

Итак, похоже, что эти артефакты теперь устарели.

Возникает вопрос:

Какие артефакты следует использовать вместо этого?

Ответ 1

После выяснения с Oracle следует использовать следующие артефакты:

Runtime

Если вы хотите развязать XML-объекты Java или маршалировать объекты Java как XML:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>...</version>
</dependency>

Компилятор схемы (XJC)

Если у вас есть XML-схема и вы хотите сгенерировать код Java:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-xjc</artifactId>
    <version>...</version>
</dependency>

Генератор схемы (JXC/ schemagen)

Если у вас есть Java-классы с аннотациями JAXB и вы хотите создать на них XML-схему:

<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-jxc</artifactId>
    <version>...</version>
</dependency>

Два последних артефакта (org.glassfish.jaxb:jaxb-xjc и org.glassfish.jaxb:jaxb-jxc) завернуты плагинами Maven, поэтому вам обычно не нужны они во время выполнения.

Использование Eclipse

Если ваши проекты Maven каким-то образом не получают полный путь к классу, включите вывод отладки и проверьте консоль Maven. Возможно, вы видите следующее сообщение об ошибке:

[ERROR] 'dependencyManagement.dependencies.dependency.systemPath' для com.sun: tools: jar должен указывать абсолютный путь, но ${tools.jar} @

Это связано со следующей проблемой:

Maven не правильно выбирает JAVA_HOME

решение от @rustyx - добавить -vm к eclipse.ini:

-vm
<PATH_TO_JDK>\jre\bin\javaw.exe