JAXB中的.episode文件是什么..?它是由JAXB生成的还是我们操作的配置文件,以避免JAXB重新生成相同的类??
答案 0 :(得分:29)
注意:我是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 强>
以下是导入Product.xsd:
的XML架构的示例<?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模式生成类时,我们将引用我们从Product.xsd生成Java类时创建的剧集文件。
xjc -d out ProductPurchaseRequest.xsd -extension -b product.episode
<强> ProductQuoteRequest.xsd 强>
以下是导入Product.xsd:
的XML架构的另一个示例<?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模式生成类时,我们将引用我们从Product.xsd生成Java类时创建的剧集文件。
xjc -d out ProductQuoteRequest.xsd -extension -b product.episode
了解更多信息
答案 1 :(得分:7)
我会添加一些琐事。
.episode
个文件只是普通的绑定文件(这就是它们与xjc -b
一起使用的原因)。-episode
所做的)。META-INF/sun-jaxb.episode
路径下的JAR中,您可以执行xjc b.xsd a.jar
- XJC会扫描JAR以查找剧集文件,然后自动使用作为绑定文件。答案 2 :(得分:0)
显然,他们是modular schema creation。
这意味着文件本身既可以用作配置器,也可以用作下游处理的数据层的生成视图。需要更多的背景来确定这里提到的内容。
答案 3 :(得分:0)
只是对答案的补充,我想提供一个关于如何避免在使用maven-jaxb2-plugin时生成.episode文件的输入
`<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>
会让它消失。