tka*_*vin 5 java jaxb xjc cxf-xjc-plugin
假设我有 2 个 xsd-s。第一个声明类型 A。第二个导入第一个 xsd(导入命名空间、xmlns:ns=... 等)并声明类型 B,该类型扩展了类型 A (base="ns:B")。像这样:
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="A">
<xs:restriction base="xs:string" />
</xs:simpleType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation=".\XSD1.xsd" />
<xs:simpleType name="B">
<xs:restriction base="A" />
</xs:simpleType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
我使用 cxf-xjc maven 插件进行代码生成,配置如下:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>${cxf.version}</version>
<configuration>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:${cxf.version}</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<xsdOptions>
<xsdOption>
<xsd>src/main/resources/XSD1.xsd</xsd>
<packagename>org.example</packagename>
</xsdOption>
<xsdOption>
<xsd>src/main/resources/XSD2.xsd</xsd>
<packagename>org.example.child</packagename>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我想将父类和子类生成到单独的包中,但是这样 XJC将父类生成到我不想要的两个包中。
是否可以告诉 JAXB/XJC 不要这样做,而只创建一个父类 (A) 并从子类 (B) 中的另一个包导入它?
归档时间: |
|
查看次数: |
391 次 |
最近记录: |