Forcer une classe dans un XSD
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 :
Code:
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 "pom.xml", la conf est la suivante :
Code:
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 projet "C", qui dépend de "A". J'ai un bean Chien défini en XSD aussi :
Code:
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> |
Dans mon pom.xml, la conf est la suivante :
Code:
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> |
Mais ça me pose deux soucis :
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 :
Code:
1 2 3 4 5 6 7
|
package om.masociete.c.jaxb
...
public class Chien extends com.masociete.jaxb.animal {
...
} |
Toute aide sera la bienvenue...
Merci d'avance,
Thierry