Bonjour à tous,
Comment peut-on forcer l'utilisation d'une classe existante ailleurs comme superclasse ?
Contexte: Je travaille sur deux projets Maven : "A" et "C".
Dans le projet "A", j'ai la classe "Animal". Le bean d'Animal a été généré avec "jaxb2-maven-plugin" depuis Maven. Et le XSD d'Animal ressemble au suivant :
Dans mon "pom.xml", la conf est la suivante :
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 <?xml version="1.0" encoding="UTF-8"?> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:com="http://xsd.masociete.com/common/" elementFormDefault="qualified" targetNamespace="http://xsd.masociete.com/common/"> <xs:element name="animal" type="com:animal"/> <xs:complexType name="animal"> <xs:annotation> <xs:documentation>An animal</xs:documentation> </xs:annotation> <xs:choice> ... </xs:choice> </xs:complexType> ... </xs:schema>
Dans mon projet "C", qui dépend de "A". J'ai un bean Chien défini en XSD aussi :
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 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>${jaxb2-maven-plugin.version}</version> <executions> <execution> <id>xjc</id> <goals> <goal>xjc</goal> </goals> </execution> </executions> <configuration> <schemaFiles>animal.xsd</schemaFiles> <packageName>com.masociete.jaxb</packageName> </configuration> </plugin>
Dans mon pom.xml, la conf est la suivante :
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 <?xml version="1.0" encoding="UTF-8"?> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mda="http://masociete.com/c/jaxb" xmlns:com="http://masociete.com/common/" targetNamespace="http://masociete.com/c/jaxb" elementFormDefault="qualified"> <xs:import schemaLocation="animal.xsd" namespace="http://masociete/common/"/> <xs:include schemaLocation="..." /> <xs:element name="chien"> <xs:complexType> <xs:annotation> <xs:documentation>Chien</xs:documentation> </xs:annotation> <xs:complexContent> <xs:extension base="com:animal"> <xs:sequence> ... </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element>
Mais ça me pose deux soucis :
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 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>${jaxb2-maven-plugin.version}</version> <executions> <execution> <id>xjc</id> <goals> <goal>xjc</goal> </goals> </execution> </executions> <configuration> <schemaFiles>chien.xsd,chat.xsd...</schemaFiles> <packageName>com.masociete.c.jaxb</packageName> </configuration> </plugin>
1) Je dois copier "animal.xsd" de "A" vers "C" pour que ça fonctionne ;
2) Ca me crée "Animal.java" dans le package "com.masociete.c.jaxb", alors que je l'ai déjà dans "com.masociete.jaxb".
Au final, ce que j'aurais voulu, c'est un bean généré qui ressemble au suivant :
Toute aide sera la bienvenue...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 package om.masociete.c.jaxb ... public class Chien extends com.masociete.jaxb.animal { ... }
Merci d'avance,
Thierry
Partager