Как мне сгенерировать несколько.xsd в один и тот же ObjectFactory?
Мне нужна ObjectFactory с несколькими объектами Java из нескольких схем. Мне повезло с несколькими различными плагинами и вариациями этих плагинов. В настоящее время я использую следующее:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>2.6.2</version>
<configuration>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.6.2</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<sourceRoot>${basedir}/target/generated-sources/xjc</sourceRoot>
<xsdOptions>
<xsdOption>
<xsd>${basedir}/src/main/resources/osds/schemas/IataAsmAdmEvent.xsd</xsd>
<xsd>${basedir}/src/main/resources/osds/schemas/IataAsmCnlEvent.xsd</xsd>
<xsd>${basedir}/src/main/resources/osds/schemas/IataAsmEqtEvent.xsd</xsd>
<packagename>com.mypackage</packagename>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>
С помощью этого плагина и многих других я могу генерировать ObjectFactory только с последней схемой в списке. Ни один из предыдущих xsds не делает в OF объекты Java. Может кто-нибудь, пожалуйста, помогите мне решить эту проблему?
Спасибо!
2 ответа
У меня была такая же проблема, я мог решить это с помощью XSD-оболочки:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="schema1.xsd" />
<xs:include schemaLocation="schema2.xsd" />
<xs:include schemaLocation="schema3.xsd" />
</xs:schema>
Конечно, это не позволяет этим включенным XSD включать друг друга или общие другие XSD. Если "schema3.xsd" включает в себя "schema2.xsd", удалите "schema2.xsd" из этого списка.
Это можно сделать с помощью плагина org.codehaus.mojo. Предоставьте несколько файлов схемы под тегом "schemaFiles":
<execution>
<id>xjc-generate-sources</id>
<goals>
<goal>xjc</goal>
</goals>
<configuration>
<extension>true</extension>
<schemaDirectory>src/main/resources/xsd</schemaDirectory>
<schemaFiles>xsd1.xsd,xsd2.xsd</schemaFiles>
<packageName>pachage.name.to.generate.classes</packageName>
<outputDirectory>target/generated-sources</outputDirectory>
<clearOutputDir>false</clearOutputDir>
</configuration>
</execution>