Java JAXB/Maven JAX-WS:global bindings.xml引用特定的WSDL

Java JAXB/Maven JAX-WS:global bindings.xml引用特定的WSDL,java,maven,jaxb,jaxws-maven-plugin,Java,Maven,Jaxb,Jaxws Maven Plugin,我正在使用Maven JAXWS plugin和bindings.xml文件覆盖从WSDL生成的JAXB类字段的Java类型,但在使用JAX-WS Maven插件从多个WSDL生成Java类时遇到问题 我的项目结构是: - src - jaxws - bindings.xml - main - resources - wsdl - Wsdl1.wsdl - Wsdl1.xsd - Wsdl2.wsdl

我正在使用Maven JAXWS plugin和bindings.xml文件覆盖从WSDL生成的JAXB类字段的Java类型,但在使用JAX-WS Maven插件从多个WSDL生成Java类时遇到问题

我的项目结构是:

- src
  - jaxws
    - bindings.xml
  - main
    - resources
      - wsdl
        - Wsdl1.wsdl
        - Wsdl1.xsd
        - Wsdl2.wsdl
        - Wsdl2.xsd
Wsdl1.wsdl
references
Wsdl1.xsd
Wsdl2.wsdl
references
Wsdl2.xsd
,两个WSDLs和xsd没有任何共同之处。我无法修改WSDLs和XSD

我想覆盖
Wsdl2.xsd
中特定类型(
Flight
)中特定字段(
departureDate
)的Java类型

我的
bindings.xml

<bindings version="2.0" extensionBindingPrefixes="xjc"
               xmlns="http://java.sun.com/xml/ns/jaxb"
               xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
               xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <globalBindings>
        <xjc:javaType name="org.joda.time.LocalDate" xmlType="xs:date"
                      adapter="my.LocalDateAdapter"/>
        <xjc:javaType name="org.joda.time.DateTime" xmlType="xs:dateTime"
                      adapter="my.DateTimeAdapter"/>
    </globalBindings>
    <bindings schemaLocation="../main/resources/wsdl/Wsdl2.xsd" node="/xs:schema">
        <bindings node="//xs:complexType[@name='Flight']//xs:element[@name='departureDate']">
            <xjc:javaType name="org.joda.time.LocalDateTime"
                          adapter="my.LocalDateTimeAdapter"/>
        </bindings>
    </bindings>
</bindings>
如果我只选择
Wsdl2.wsdl
进行JAX-WS插件的处理,那么一切都可以正常工作

<configuration>
    <wsdlDirectory>${basedir}/src/main/resources/wsdl</wsdlDirectory>
    <wsdlFiles>
        <wsdlFile>Wsdl2.wsdl</wsdlFile>
    </wsdlFiles>
</configuration>

${basedir}/src/main/resources/wsdl
Wsdl2.wsdl

如何解决此问题?

为除Wsdl2.wsdl之外的所有wsdl创建一个wsimport执行,并为Wsdl2.wsdl创建另一个执行。这样,每次执行都可以有不同的配置,并为每个执行指定不同的jaxb绑定

[INFO] --- jaxws-maven-plugin:2.2:wsimport (default) @ my-backend ---
[INFO] Processing: file:/D:/dev/Projects/my-api/my-backend/src/main/resources/wsdl/Wsdl1.wsdl
[INFO] jaxws:wsimport args: [-keep, -s, D:\dev\Projects\my-api\my-backend\target\generated-sources\wsimport, -encoding, UTF-8, -Xnocompile, -b, D:\dev\Projects\my-api\my-backend\src\jaxws\bindings.xml, file:/D:/dev/Projects/my-api/my-backend/src/main/resources/wsdl/Wsdl1.wsdl]
parsing WSDL...

[ERROR] "file:/D:/dev/Projects/my-api/my-backend/src/main/resources/wsdl/Wsdl2.xsd"
 is not a part of this compilation. Is this a mistake for "file:/D:/dev/Projects/my-api/my-backend/src/main/resources/wsdl/Wsdl1.wsdl#types?schema1"?
  line 11 of file:/D:/dev/Projects/my-api/my-backend/src/jaxws/bindings.xml
<configuration>
    <wsdlDirectory>${basedir}/src/main/resources/wsdl</wsdlDirectory>
    <wsdlFiles>
        <wsdlFile>Wsdl2.wsdl</wsdlFile>
    </wsdlFiles>
</configuration>