Ошибка привязки JAXB с несколькими XML-схемами в одном модуле

В моем проекте maven с несколькими модулями у меня есть модуль, который определяет две схемы XML. Один содержит общие "типы", используемые другой схемой в других модулях, другой - специфическую конфигурацию для утилиты. Мне нужно предоставить как среду сборки, так и среду выполнения. Я использую maven-jaxb2-плагин.

Я сталкиваюсь с проблемой с привязкой JAXB, особенно в файле bindings.xjb. Я добавил отдельные привязки схемы для двух схем, но когда я запускаю сборку maven, я получаю сообщение об ошибке, указывающее, что одна из схем (вторая) "не является частью этой компиляции". Вот файл XJB:

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema"
              xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
              xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
              jxb:extensionBindingPrefixes="xjc"
              jxb:version="2.1">

    <jxb:globalBindings>
        <xjc:javaType name="java.net.URI" xmlType="xs:anyURI"
          adapter="edu.mit.ll.oms.security.common.URIBinder" />
    </jxb:globalBindings>

    <jxb:bindings schemaLocation="camel-config.xsd">
        <jxb:schemaBindings>
            <jxb:package name="a.b.c.util.config" />
        </jxb:schemaBindings>
    </jxb:bindings>

    <jxb:bindings schemaLocation="security-common.xsd">
        <jxb:schemaBindings>
            <jxb:package name="a.b.c.common.config" />
        </jxb:schemaBindings>
    </jxb:bindings>
</jxb:bindings>

Что я делаю неправильно? Как выполнить связывание для нескольких схем в одном модуле?

ОБНОВЛЕНИЕ: 08/07/2018 15:20 ПО ВОСТОЧНОМУ ВРЕМЕНИ

Методом проб и ошибок я обнаружил, что если я удалил определенный элемент из модуля pom.xml, ошибка была устранена. Остается вопрос: почему?

Фрагмент из pom.xml (обратите внимание, что было закомментировано):

  <build>
    <plugins>
      <plugin>
        <groupId>org.jvnet.jaxb2.maven2</groupId>
        <artifactId>maven-jaxb2-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <schemaLanguage>AUTODETECT</schemaLanguage>
          <schemaDirectory>src/main/resources/config</schemaDirectory>
          <schemaIncludes>
            <include>*.xsd</include>
          </schemaIncludes>
          <bindingIncludes>
            <include>*.xjb</include>
          </bindingIncludes>
          <cleanPackageDirectories>true</cleanPackageDirectories>
          <!--
          <schemaIncludes>
            <schemas>
              camel-config.xsd security-common.xsd
            </schemas>
          </schemaIncludes>
          -->
        </configuration>
      </plugin>
    </plugins>
  </build>

Я должен признать, что я не уверен, правильно ли настроен элемент комментария. Это относится к другой публикации ( однозначная документация для maven-jaxb2-plugin), которую я сделал, которая включает правильный синтаксис конфигурации для maven-jaxb2-plugin.

0 ответов

Другие вопросы по тегам