Мне нужно сгенерировать классы Java из файла WSDL.
Я использую плагин jaxws-maven-plugin
, настроенный следующим образом:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>wsimportPhase</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<keep>true</keep>
<verbose>true</verbose>
<packageName>my.package.name</packageName>
<wsdlFiles>
<wsdlFile>${basedir}/wsdl/myWSDL.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>wsdl/myWSDL.wsdl</wsdlLocation>
<bindingDirectory>wsdl</bindingDirectory>
<bindingFiles>
<bindingFile>myBinding.xml</bindingFile>
</bindingFiles>
<sourceDestDir>${basedir}/src/main/java</sourceDestDir>
</configuration>
</execution>
</executions>
</plugin>
И я настроил (с некоторымитрудности) привязки JAXB следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<jaxws:bindings version="2.1"
schemaLocation="myWSDL.wsdl"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb">
<jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema/xs:import">
<jaxb:bindings schemaLocation="importedXSD_1.xsd">
<jaxb:bindings node="xs:complexType[@name='DuplicatedType']">
<jaxb:schemaBindings>
<jaxb:nameXmlTransform>
<jaxb:typeName suffix="Suffix1"/>
<jaxb:elementName suffix="Suffix1"/>
</jaxb:nameXmlTransform>
</jaxb:schemaBindings>
</jaxb:bindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="importedXSD_2.xsd">
<jaxb:bindings node="xs:complexType[@name='DuplicatedType']">
<jaxb:schemaBindings>
<jaxb:nameXmlTransform>
<jaxb:typeName suffix="Suffix2"/>
<jaxb:elementName suffix="Suffix2"/>
</jaxb:nameXmlTransform>
</jaxb:schemaBindings>
</jaxb:bindings>
</jaxb:bindings>
</jaxws:bindings>
</jaxws:bindings>
Но когда я запускаю mvn install
, я получаю следующую ошибку:
[INFO] jaxws:wsimport args: [-keep, -s, '/workspace/myproject/src/main/java', -d, '/workspace/myproject/target/classes', -verbose, -encoding, UTF-8, -Xnocompile, -p, my.package.name, -wsdllocation, wsdl/myWSDL.wsdl, -b, 'file:/workspace/myproject/src/main/resources/wsdl/mybinding.xml', "file:/workspace/myproject/src/main/resources/wsdl/myWSDL.wsdl"]
parsing WSDL...
[ERROR] A class/interface with the same name "my.package.name.DuplicatedType" is already in use. Use a class customization to resolve this conflict.
XPath правильно находит нужный complexType вxsd, так что я не понимаю, как это исправить.