同一模块中有多个XML模式的JAXB绑定错误

时间:2018-08-08 18:37:14

标签: maven xjc xjb

在我的多模块maven项目中,我有一个定义两个XML模式的模块。一个包含其他模块中的其他模式使用的通用“类型”,另一个包含实用程序的特定配置。我需要同时提供构建和运行时环境。我正在使用maven-jaxb2-plugin。

我遇到了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>

我在做什么错?如何在同一模块中为多个架构执行绑定?

更新:美国东部时间2018年8月7日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>

我必须承认我不确定注释元素是否配置正确。这与我发表的另一篇文章(Unambiguous documentation for the maven-jaxb2-plugin)有关,涉及到maven-jaxb2-plugin的正确配置语法。

0 个答案:

没有答案