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 :
j'avais ensuite deux schéma XSD dont l'un était appelé par l'autre :
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>
schema1.xsd
schema2.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" /> ...
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 :
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)
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>
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.
Partager