web-dev-qa-db-fra.com

Plugin XJC Maven (jaxb2-maven-plugin) Java 11 Problèmes de migration

Je travaille actuellement sur Java 11 projet de migration où jaxb2-maven-plugin a été utilisé pour la tâche XJC. Comme l'exécutable XJC n'est pas présent dans la version JDK 11, je reçois les erreurs mentionnées ci-dessous) .

    [ERROR] Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:2.2:xjc (xjc-schema1) on project paymaster-service: Execution xjc-schema1 of goal org.codehaus.mojo:jaxb2-maven-plugin:2.2
:xjc failed: A required class was missing while executing org.codehaus.mojo:jaxb2-maven-plugin:2.2:xjc: com/Sun/codemodel/CodeWriter
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.codehaus.mojo:jaxb2-maven-plugin:2.2
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/C:/Users/voletis/.m2/repository/org/codehaus/mojo/jaxb2-maven-plugin/2.2/jaxb2-maven-plugin-2.2.jar
[ERROR] urls[1] = file:/C:/Users/voletis/.m2/repository/javax/xml/bind/jaxb-api/2.2.11/jaxb-api-2.2.11.jar
[ERROR] urls[2] = file:/C:/Users/voletis/.m2/repository/org/glassfish/jaxb/jaxb-core/2.2.11/jaxb-core-2.2.11.jar
[ERROR] urls[3] = file:/C:/Users/voletis/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.2.11/jaxb-runtime-2.2.11.jar
[ERROR] urls[4] = file:/C:/Users/voletis/.m2/repository/org/glassfish/jaxb/jaxb-xjc/2.2.11/jaxb-xjc-2.2.11.jar
[ERROR] urls[5] = file:/C:/Users/voletis/.m2/repository/org/glassfish/jaxb/jaxb-jxc/2.2.11/jaxb-jxc-2.2.11.jar
[ERROR] urls[6] = file:/C:/Users/voletis/.m2/repository/com/thoughtworks/qdox/qdox/2.0-M3/qdox-2.0-M3.jar
[ERROR] urls[7] = file:/C:/Users/voletis/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
[ERROR] urls[8] = file:/C:/Users/voletis/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
[ERROR] urls[9] = file:/C:/Users/voletis/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
[ERROR] urls[10] = file:/C:/Users/voletis/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
[ERROR] urls[11] = file:/C:/Users/voletis/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
[ERROR] urls[12] = file:/C:/Users/voletis/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[13] = file:/C:/Users/voletis/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] urls[14] = file:/C:/Users/voletis/.m2/repository/org/codehaus/plexus/plexus-compiler-api/2.5/plexus-compiler-api-2.5.jar
[ERROR] urls[15] = file:/C:/Users/voletis/.m2/repository/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar
[ERROR] urls[16] = file:/C:/Users/voletis/.m2/repository/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR]
[ERROR] -----------------------------------------------------
[ERROR] : com.Sun.codemodel.CodeWriter
[ERROR] -> [Help 1]
[ERROR]

Voici mon pom.xml

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>jaxb2-maven-plugin</artifactId>
   <version>2.2</version>
   <executions>
      <execution>
         <id>xjc-schema1</id>
         <goals>
            <goal>xjc</goal>
         </goals>
         <configuration>
            <target>2.2</target>
            <schemaFiles>SubmitPaymentBatch/SubmitPaymentRequest.xsd</schemaFiles>
            <packageName>app.test.services.submitpayment.request</packageName>
            <clearOutputDir>false</clearOutputDir>
         </configuration>
      </execution>
</plugin>

J'ai ajouté les dépendances nécessaires comme JAXB, JAXB-IMPL, etc., conformément aux exigences de Java 11. Mais je ne parviens toujours pas à résoudre les problèmes. Avez-vous une solution suggérée pour cela? Merci Avance.

3
Syam Kumar

J'ai résolu ce problème en suivant le lien de référence ci-dessous.

https://github.com/davidmoten/jax-maven-plugin

Selon la référence du tutoriel ci-dessus, j'ai modifié mon plugin comme ci-dessous et je suis en mesure de résoudre ce problème.

<plugin>
   <groupId>com.github.davidmoten</groupId>
   <artifactId>jax-maven-plugin</artifactId>
   <version>VERSION_HERE</version>

   <executions>
      <execution>
         <id>xjc-schema1</id>
         <goals>
            <goal>xjc</goal>
         </goals>
         <configuration>
            <target>2.2</target>
            <schemaFiles>SubmitPaymentBatch/SubmitPaymentRequest.xsd</schemaFiles>
            <packageName>app.test.services.submitpayment.request</packageName>
            <clearOutputDir>false</clearOutputDir>
         </configuration>
      </execution>
   </executions>
</plugin>
1
Syam Kumar
8

Je viens de trouver une solution de contournement pour les problèmes d'utilisation de jaxb2-maven-plugin avec Java 11. Il consiste à ajouter des dépendances supplémentaires dans pom.xml et à ajouter un fichier XSD factice supplémentaire au projet , à côté des fichiers XSD appropriés. Je les ai mis dans mon blog ici: https://artofcode.wordpress.com/2019/02/26/jaxb2-maven-plugin-2-4- et-Java-11 /

1
Krzysztof Tomaszewski

J'ai pu résoudre le problème pour JDK11 en ajoutant toutes les dépendances répertoriées ici: https://github.com/Apache/cxf/blob/master/distribution/src/main/release/samples/pom. xml # L251-L29 que le projet Apache.cxf utilise dans leurs exemples de projets commençant pour JDK9

0
Fabian