web-dev-qa-db-fra.com

Quels artefacts dois-je utiliser pour JAXB RI dans mon projet Maven?

Historiquement, j'ai toujours utilisé les artefacts JAXB RI suivants dans mes projets Maven:

  • com.Sun.xml.bind:jaxb-impl - Durée
  • com.Sun.xml.bind:jaxb-xjc - Compilateur de schéma
  • com.Sun.xml.bind:jaxb-jxc - Générateur de schéma

Depuis approximativement la version 2.2.10* ces artefacts sont maintenant décrits comme "anciens" :

com.Sun.xml.bind:jaxb-impl

Ancien module JAXB Runtime.

Il semble donc que ces artefacts sont désormais obsolètes.

La question est:

Quels artefacts devraient être utilisés à la place?

38
lexicore

Après clarification avec Oracle, les artefacts suivants doivent être utilisés:

Durée

Si vous souhaitez dé-marshal XML pour Java objets ou marshal Java objets en XML:

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

Compilateur de schéma (XJC)

Si vous avez un schéma XML et que vous souhaitez générer le code Java à partir de celui-ci:

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

Générateur de schéma (JXC/schemagen)

Si vous avez des classes Java avec des annotations JAXB et que vous souhaitez générer un schéma XML basé sur celles-ci:

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

Les deux derniers artefacts (org.glassfish.jaxb:jaxb-xjc et org.glassfish.jaxb:jaxb-jxc) sont encapsulés par les plugins Maven, donc vous n'en auriez normalement pas besoin pendant l'exécution.

Utilisation d'Eclipse

Si vos projets Maven n'obtiennent pas le chemin de classe complet, activez la sortie de débogage et vérifiez la console Maven. Vous pouvez y voir le message d'erreur suivant:

[ERREUR] 'dependencyManagement.dependencies.dependency.systemPath' pour com.Sun: tools: le pot doit spécifier un chemin absolu mais est $ {tools.jar} @

Cela est dû au problème suivant:

Maven ne sélectionne pas correctement Java_HOME

La solution de @rustyx consiste à ajouter -vm à l'option Eclipse.ini:

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