У меня есть десятки и десятки файлов .xsd
, для которых я хочу автогенерировать код. Несколько файлов имеют повторяющиеся имена, которые сталкиваются, когда я пытаюсь сгенерировать их все в одно и то же время.
Я сосредотачиваюсь только на том, чтобы попытаться заставить 2 из них работать.
Когда я получу эти 2 работы, я исправлю остальные. Но сейчас я сосредоточен на двух этих файлах. Я не контролирую их, они от поставщика и следуют "стандарту", поэтому редактирование их не является вариантом по нескольким причинам.
Я использую maven-jaxb2-plugin
для обработки этих файлов.
Я добавил файл binding.xjb
, как указано в ссылке в ответе mat b
и других инструкциях, которые я нашел в Интернете. Но я получаю следующие ошибки: нет вывода.
<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="2.1"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xsi:schemaLocation=" http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd">
<jxb:bindings schemaLocation="mac-3.4.xsd">
<jxb:schemaBindings>
<jxb:package name="my.company.mac"/>
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="mac-stylesheet-3.4.xsd">
<jxb:schemaBindings>
<jxb:package name="my.company.stylesheet"/>
</jxb:schemaBindings>
</jxb:bindings>
</jxb:bindings>
дает следующую ошибку:
[ERROR] Error while parsing schema(s).Location [ file:/C:/Users/Jarrod%20Roberson/Projects/spa-tools/spa-lib/src/main/sc
hema/mac-stylesheet-3.4.xsd{165,33}].
org.xml.sax.SAXParseException: 'halign' is already defined
Оскорбительный элемент: (есть много других, это только первый, который сталкивается)
<xsd:simpleType name="halign">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="left" />
<xsd:enumeration value="center" />
<xsd:enumeration value="right" />
</xsd:restriction>
</xsd:simpleType>
И одинаково в каждом из файлов .xsd
, как мне разрешить это дублирование с генерированием только одного класса или каждого из них, сгенерированных в их собственное пространство имен пакетов?
Это не единственный повторяющийся элемент, как это, их много, поэтому просто попытка удалить их из файлов также не является вариантом.
Этот halign
находится в нескольких файлах .xsd
, и я хочу либо поместить их в свои отдельные пакеты, либо дать возможность компилятору использовать первый, который был сгенерирован.
Вот где я начал, прежде чем я попробовал внешний файл .xjb
, просто указав package
в pom.xml
.
Как настроить привязку, чтобы игнорировать дубликаты конфигураций, сопоставлять их для разделения пакетов или сопоставления их с существующими реализациями?