Java 使用XJC使用Mave从给定的XSD文件生成源代码
我有两个XSD文件。其中一个已经用于生成大量Java源代码。我将构建另一个XSD来为另一个项目创建类。我想在第二个XSD中使用第一个XSD生成的类作为“类型”。 我试图在第二个XSD中导入第一个XSD。 但是通过这个,第一个XSD的所有类都被重新构建。 我只想使用正确的引用(类名和包名)为使用过的旧类构建一个在新XSD中定义的新类 样本: oldXSD:Java 使用XJC使用Mave从给定的XSD文件生成源代码,java,xml,maven,xsd,jaxb2,Java,Xml,Maven,Xsd,Jaxb2,我有两个XSD文件。其中一个已经用于生成大量Java源代码。我将构建另一个XSD来为另一个项目创建类。我想在第二个XSD中使用第一个XSD生成的类作为“类型”。 我试图在第二个XSD中导入第一个XSD。 但是通过这个,第一个XSD的所有类都被重新构建。 我只想使用正确的引用(类名和包名)为使用过的旧类构建一个在新XSD中定义的新类 样本: oldXSD: 您需要使用。虽然这个答案是正确的,但我建议您编辑它以包含更多相关信息。“仅链接的答案价值有限。@Rob甚至没有亲自尝试找到答案,链接是一个好的
您需要使用。虽然这个答案是正确的,但我建议您编辑它以包含更多相关信息。“仅链接的答案价值有限。@Rob甚至没有亲自尝试找到答案,链接是一个好的开始。他仍然可以改进他的问题以获得帮助。@Michael:谢谢,链接真的是一个很好的开始。但直到目前为止,我花了很多时间从零开始熟悉JAXB的知识。没有关于生成源的良好描述;至少不是在科德豪斯或莫约豪斯我所期待的地方。即使是你提到的网站也只是一个闪光点;配置参数没有详细描述,到示例的链接通常不起作用,我从未使用过Mojohaus插件,我使用的是我提供给您的GitHub插件。到目前为止,我已经编译了几个带有两级嵌套的模式。Maven JAXB2插件在这方面做得非常好。你应该做的是从插件开始,一块一块地显示你的结果。我们的商店里有mojohaus,所以我从这个开始。但是我也尝试了maven jaxb插件,到目前为止我已经了解了逻辑;但不能使用它,至少不能立即使用。我们目前创建的“oldClasses”从“oldXSD”到路径。jar文件是由以后的“安装”创建的。
<xs:element name="OldClass",....
<xs:element name="OtherClass1",...
<xs:element name="OtherClass2",...
etc
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://new.namespace.com"
xmlns:empns="http://new.namespace.com"
xmlns:Q1="http://old.namespace.com">
<xs:import namespace="http://old.namespace.com"
schemaLocation="../oldXSD.xsd" />
<xs:element name="bookingStatus" type="empns:BookingStatus"></xs:element>
<xs:complexType name="BookingStatus">
<xs:sequence>
<xs:element name="userId" type="xs:string" minOccurs="1"
maxOccurs="1" />
<xs:element name="userName" type="xs:string"
minOccurs="1" maxOccurs="1" />
<xs:element name="oldclasses" type="Q1:OldClass" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:schema>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>json</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/jaxb</outputDirectory>
<packageName>getting.started.with.jaxb.generated</packageName>
<schemaDirectory>src/main/resources/json</schemaDirectory>
<schemaFiles>newXSD.xsd</schemaFiles>
</configuration>
</execution>
</executions>
</plugin>