cxf-xjc-плагин не генерирует Java-классы из-за столкновения в классе ObjectFactory
Я не получил класс, сгенерированный с помощью плагина cxf-xjc maven для Java из-за следующей ошибки:
[ОШИБКА] Два объявления вызывают конфликт в классе ObjectFactory. строка 21 файла:/C:/../IdeaProjects/CXFDocInstanceGenerator/XSDToClassGenerator/src/main/resources/IntegralAdmission_bis.xsd
Есть 3 XSDS, участвующих в генерации
- PExGeneraReport_bis.xsd (который использует два других ниже)
- PartialAdmission_bis.xsd
- IntegralAdmission_bis.xsd
последние два xsd создают конфликт для следующего элемента:
<xs:group name="RootGroup">
<xs:sequence>
<xs:element name="modulo" type="Modulo">
</xs:element>
</xs:sequence>
</xs:group>
содержится в обоих xsds (PartialAdmission_bis.xsd и IntegralAdmission_bis.xsd)
Я использовал следующее последнее условие внешнего связывания: чтобы решить проблему (вместе со многими другими попытками) без успеха!
<jxb:bindings schemaLocation="IntegralAdmission_bis.xsd">
<jxb:bindings node="//xs:element[@name='modulo']">
<jxb:factoryMethod name="ModuloAccoglimentoIntegrale"/>
</jxb:bindings>
</jxb:bindings>
Помимо имени factoryMethod я использую также jxb:class и jxb:elementName без успеха. Классы не создаются
Изменение имени элемента в одной настройке xsd:
xs: element name = " moduloIA " type = "Modulo"
решает проблему, но мне нужно сохранить 'modulo' в качестве имени элемента xml для маршалинга, и поэтому мне нужно изменить только привязку к классам java или имени метода! Любая идея о правильной привязки, чтобы установить, чтобы решить проблему?
В ответ на комментарии @lexicore ниже я сообщаю о [mcve] проекта: pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<groupId>CXFDocInstanceGenerator</groupId>
<artifactId>MCVE_XSDToClassGenerator</artifactId>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.9</source>
<target>1.9</target>
</configuration>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-xjc-plugin</artifactId>
<version>2.3.0</version>
<configuration>
<extensions>
<extension>org.apache.cxf.xjcplugins:cxf-xjc-dv:2.3.0</extension>
</extensions>
</configuration>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<goals>
<goal>xsdtojava</goal>
</goals>
<configuration>
<sourceRoot>${project.build.sourceDirectory}</sourceRoot>
<xsdOptions>
<xsdOption>
<xsd>${project.basedir}/src/main/resources/PExGeneraReport_bis.xsd</xsd>
<!--bindingFile>${project.basedir}/src/main/resources/dgPEXGR.xjb</bindingFile-->
<extension>true</extension>
</xsdOption>
</xsdOptions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
</dependencies>
</project>
основной xsd для привязки PExGeneraReport_bis.xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:aci="urn://IntegralAdmission_bis"
xmlns:acp="urn://PartialAdmission_bis"
xmlns="urn://GenerateReport"
targetNamespace="urn://GenerateReport"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
>
<xs:import namespace="urn://IntegralAdmission_bis" schemaLocation="IntegralAdmission_bis.xsd"/>
<xs:import namespace="urn://PartialAdmission_bis" schemaLocation="PartialAdmission_bis.xsd"/>
<xs:element name="root" type="Root"/>
<xs:complexType name="Root">
<xs:sequence>
<xs:element name="frontespizioPostel" type="xs:string"/>
<xs:group ref="RootGroup"/>
</xs:sequence>
</xs:complexType>
<xs:group name="RootGroup">
<xs:sequence>
<xs:choice>
<xs:group ref="aci:RootGroup"/>
<xs:group ref="acp:RootGroup"/>
</xs:choice>
<!--xs:element name="metadati" type="Metadati"/-->
</xs:sequence>
</xs:group>
</xs:schema>
первый импортированный xsd IntegralAdmission_bis.xsd
<xs:element name="root" type="Root"/> <xs:complexType name="Root"> <xs:sequence> <xs:element name="frontespizioPostel" type="xs:string"/> <xs:group ref="RootGroup"/> </xs:sequence> </xs:complexType> <xs:group name="RootGroup"> <xs:sequence> <xs:element name="modulo" type="Modulo"> </xs:element> </xs:sequence> </xs:group> <xs:complexType name="Modulo"> <xs:sequence> <xs:element name="denominazioneAzienda" type="xs:string"/> <xs:element name="indirizzo" type="xs:string"/> <xs:element name="pecAzienda" type="xs:string"/> <xs:element name="dataProvvedimento" type="xs:date"/> <xs:element name="tipoPrestazione" type="xs:string"/> <xs:element name="numeroProtocollo" type="xs:string"/> <xs:element name="numeroProvvedimento" type="xs:string"/> <xs:element name="annoProvvedimento" type="xs:string"/> <xs:element name="dataPresentazione" type="xs:date"/> </xs:sequence> </xs:complexType>
Второй конфликтует с xsd выше (IntegralAdmission_bis.xsd) PartialAdmission_bis.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.0"
xmlns="urn://PartialAdmission_bis"
targetNamespace="urn://PartialAdmission_bis"
elementFormDefault="qualified"
attributeFormDefault="qualified">
<xs:element name="root" type="Root"/>
<xs:complexType name="Root">
<xs:sequence>
<xs:element name="frontespizioPostel" type="xs:string"/>
<xs:group ref="RootGroup"/>
</xs:sequence>
</xs:complexType>
<xs:group name="RootGroup">
<xs:sequence>
<xs:element name="modulo" type="Modulo">
</xs:element>
</xs:sequence>
</xs:group>
<xs:complexType name="Modulo">
<xs:sequence>
<xs:element name="denominazioneAzienda" type="xs:string"/>
<xs:element name="indirizzo" type="xs:string"/>
<xs:element name="pecAzienda" type="xs:string"/>
<xs:element name="dataProvvedimento" type="xs:date"/>
<xs:element name="tipoPrestazione" type="xs:string"/>
<xs:element name="numeroProtocollo" type="xs:string"/>
<xs:element name="numeroProvvedimento" type="xs:string"/>
<xs:element name="annoProvvedimento" type="xs:string"/>
<xs:element name="dataPresentazione" type="xs:date"/>
<xs:element name="causale" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Связующий файл:
<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.1">
<jxb:bindings schemaLocation="IntegralAdmission_bis.xsd">
<jxb:bindings node="//xs:element[@name='modulo']">
<jxb:factoryMethod name="ModuloAccoglimentoIntegrale"/>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
Каталоги проекта: