Bonjour,
J'ai récupéré il y a quelques temps un projet java plein de technologies obsolètes, et je dois le faire évoluer.
Le projet est en java 8 et je dois le passer en 17 avec toutes les évolutions des divers paquets utilisés.
Parmi ceux là, j'ai dû faire évoluer la génération automatique de certaines de mes classes qui se faisait via org.jvnet.jaxb2.maven2.

A l'origine, dans mon pom j'avais un plugin défini comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
<plugin>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin</artifactId>
        <version>0.14.0</version>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
            <configuration>
              <schemaDirectory>${project.basedir}/src/main/resources/xsd</schemaDirectory>
              <bindingDirectory>${project.basedir}/src/main/resources/xsd</bindingDirectory>
              <schemaIncludes>
                <include>schema1.xsd</include>
              </schemaIncludes>
              <strict>true</strict>
              <!-- For including equals,hashcode and toString methods in generated code -->
              <plugins>
                <plugin>
                  <groupId>org.jvnet.jaxb2_commons</groupId>
                  <artifactId>jaxb2-basics</artifactId>
                  <version>1.11.1</version>
                </plugin>
                <!-- For including xml annotations in generated code -->
                <plugin>
                  <groupId>org.jvnet.jaxb2_commons</groupId>
                  <artifactId>jaxb2-basics-annotate</artifactId>
                  <version>1.1.0</version>
                </plugin>
                <plugin>
                  <groupId>org.jvnet.jaxb2_commons</groupId>
                  <artifactId>jaxb2-value-constructor</artifactId>
                  <version>3.0</version>
                </plugin>
              </plugins>
              <args>
                <arg>-Xequals</arg>
                <arg>-XhashCode</arg>
                <arg>-XtoString</arg>
                <arg>-Xannotate</arg>
                <arg>-Xvalue-constructor</arg>
              </args>
            </configuration>
          </execution>
        </executions>
      </plugin>
j'avais ensuite deux schéma XSD dont l'un était appelé par l'autre :


schema1.xsd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:monProjet="urn:monprojet" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  targetNamespace="urn:monprojet.paquet1" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.00"
  xmlns:iso="urn:monprojet:isotypes">
  <xsd:import namespace="urn=monprojet:isotypes:v1.00" schemaLocation="schema2.xsd" />
...
schema2.xsd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:iso="urn:monprojet:isotypes:v1.00" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  targetNamespace="urn:monprojet:isotypes:v1.00" elementFormDefault="qualified" attributeFormDefault="unqualified"
  version="1.00">

lors du build du projet mes classes était générées en un seul exemplaire dans les deux paquets en fonction du schéma (1 ou 2) dans lequel elles étaient définies.

aujourd'hui mon plugin est défini ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
           <plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-xjc-plugin</artifactId>
                <version>4.1.0</version>
                <executions>
                    <execution>
                        <id>cxf-xjc</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>xsdtojava</goal>
                        </goals>
                        <configuration>
                                <xsdOption>
                                    <xsd>${project.basedir}/src/main/resources/xsd/schema1.xsd</xsd>
                                    <packagename>monprojet.paquet1</packagename>
                                </xsdOption>
                            </xsdOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
Les classes sont bien générées, mais elle sont toutes générées dans le même paquets, et du coup le projet ne fonctionne pas (vu qu'elles sont recherchées dans un paquet qui n'existe pas)
Si j'ajoute la référence de mon schéma2.xsd dans le pom, elles sont générées en double, et le projet ne fonctionne pas non plus.

Si vous pouvez m'aider, ça serait super.
Merci.
Louve.