在我的多模块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的正确配置语法。