Подтвердить что ты не робот

Что такое файл .episode..?

что такое .episode файл в JAXB..? Является ли это сгенерированным JAXB или это файл конфигурации, который мы будем манипулировать, чтобы избежать регенерации одних и тех же классов с помощью JAXB..?

4b9b3361

Ответ 1

Примечание. Я EclipseLink JAXB (MOXy) ведет и член группы JAXB 2 (JSR-222).

Файл .episode генерируется компилятором XJC (XML Schema to Java). Это привязки схем, которые связывают типы схем с существующими классами. Это полезно, когда у вас есть одна XML-схема, которая импортируется другими схемами, поскольку она препятствует регенерации модели. Ниже приведен пример:

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>

Поскольку несколько XML-схем импортируют Product.xsd, мы можем использовать файлы эпизодов, чтобы классы, соответствующие Product.xsd, генерировались только один раз.

xjc -d out -episode product.episode Product.xsd

ProductPurchaseRequest.xsd

Ниже приведен пример XML-схемы, которая импортирует 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>

Когда мы генерируем классы из этой XML-схемы, мы будем ссылаться на файл эпизода, который мы создали, когда мы сгенерировали классы Java из Product.xsd.

xjc -d out ProductPurchaseRequest.xsd -extension -b product.episode

ProductQuoteRequest.xsd

Ниже приведен еще один пример XML-схемы, которая импортирует 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>

Опять же, когда мы генерируем классы из этой XML-схемы, мы будем ссылаться на файл эпизода, который мы создали, когда мы сгенерировали классы Java из Product.xsd.

xjc -d out ProductQuoteRequest.xsd -extension -b product.episode

Дополнительная информация

Ответ 2

Я добавлю несколько мелочей.

  • Фактически, файлы .episode - это просто обычные файлы привязки (почему они работают с xjc -b).
  • Они могут быть сгенерированы с помощью специального встроенного плагина (что делает -episode).
  • Если помещено в JAR по пути META-INF/sun-jaxb.episode, вы можете сделать xjc b.xsd a.jar - XJC будет сканировать JAR для эпизодических файлов, а затем автоматически использовать файлы привязки.
  • Вся эта красота прекрасно работает с Maven (maven-jaxb2-plugin). Однако с более поздней версией вы можете использовать файлы привязки из артефактов JAR даже без эпизодов.

Ответ 3

По-видимому, они предназначены для создания модульной схемы.

Это означает, что сами файлы могут использоваться как в качестве конфигуратора, так и в качестве генеративного представления уровня данных для последующей обработки. Для определения того, о чем здесь говорится, потребуется больше контекста.

Ответ 4

Просто аддон к ответу, я хотел бы указать, как избежать создания файла .episode при использовании 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> заставит его исчезнуть.