qu'est-ce qu'un fichier .episode dans JAXB ..? Est-il généré par le JAXB ou s'agit-il d'un fichier de configuration que nous manipulerions pour éviter la régénération des mêmes classes par JAXB ..?
Remarque: Je suis le EclipseLink JAXB (MOXy) lead et membre du JAXB 2 (JSR-222) groupe d'experts.
Un fichier .episode est généré par le compilateur XJC (XML Schema to Java). C'est une liaison de schéma qui associe des types de schéma à des classes existantes. Cela est utile lorsque vous avez un schéma XML importé par d'autres schémas, car cela empêche la régénération du modèle. Ci-dessous un exemple:
Product.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/Product"
xmlns:tns="http://www.example.org/Product"
elementFormDefault="qualified">
<element name="product">
<complexType>
<sequence>
<element name="id" type="string"/>
<element name="name" type="string"/>
</sequence>
</complexType>
</element>
</schema>
Étant donné que plusieurs schémas XML importent Product.xsd, nous pouvons exploiter les fichiers d'épisodes de sorte que les classes correspondant à Product.xsd ne soient générées qu'une seule fois.
xjc -d out -episode product.episode Product.xsd
ProductPurchaseRequest.xsd
Vous trouverez ci-dessous un exemple de schéma XML qui importe Product.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/ProductPurchaseRequest"
xmlns:tns="http://www.example.org/ProductPurchaseRequest"
xmlns:prod="http://www.example.org/Product"
elementFormDefault="qualified">
<import namespace="http://www.example.org/Product" schemaLocation="Product.xsd"/>
<element name="purchase-request">
<complexType>
<sequence>
<element ref="prod:product" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
</schema>
Lorsque nous générons des classes à partir de ce schéma XML, nous référencerons le fichier d'épisode créé lors de la génération de classes Java à partir de Product.xsd.
xjc -d out ProductPurchaseRequest.xsd -extension -b product.episode
ProductQuoteRequest.xsd
Vous trouverez ci-dessous un autre exemple de schéma XML qui importe Product.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/ProductQuoteRequest"
xmlns:tns="http://www.example.org/ProductQuoteRequest"
xmlns:prod="http://www.example.org/Product"
elementFormDefault="qualified">
<import namespace="http://www.example.org/Product" schemaLocation="Product.xsd"/>
<element name="quote">
<complexType>
<sequence>
<element ref="prod:product"/>
</sequence>
</complexType>
</element>
</schema>
De nouveau, lorsque nous générons des classes à partir de ce schéma XML, nous référencerons le fichier d'épisode créé lors de la génération de classes Java à partir de Product.xsd.
xjc -d out ProductQuoteRequest.xsd -extension -b product.episode
Pour plus d'informations
Je vais ajouter quelques anecdotes.
.episode
ne sont que des fichiers de liaison normaux (c’est pourquoi ils fonctionnent avec xjc -b
).-episode
).META-INF/Sun-jaxb.episode
, vous pouvez procéder à xjc b.xsd a.jar
- XJC analysera les fichiers JAR des fichiers d'épisode, puis les utilisera automatiquement comme fichiers de liaison.Juste un addon à la réponse, je voudrais fournir une entrée sur la façon d'éviter de générer un fichier .episode lors de l'utilisation de maven-jaxb2-plugin
`<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.12.3</version>
<executions>
<execution>
<id>schema-conversion</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaDirectory>src/main/schema/myschema</schemaDirectory>
<bindingDirectory>src/main/schema/myschema</bindingDirectory>
<bindingIncludes>
<include>binding_info.xjb</include>
</bindingIncludes>
<generateDirectory>src/main/Java/</generateDirectory>
<episode>false</episode>
</configuration>
</execution>
</executions>
</plugin>`
<episode>false</episode>
le fera disparaître.
Apparemment, ils sont pour création de schéma modulaire .
Cela implique que les fichiers eux-mêmes peuvent être utilisés à la fois comme configurateur et comme vue générative d'une couche de données pour le traitement en aval. Il faudrait plus de contexte pour déterminer à quoi il est fait référence ici.