Ответ 1
Прежде всего, я бы использовал apache cxf для этой сборки, поскольку он может обрабатывать несколько WSDL одновременно и намного более современен. Он будет намного эффективнее и создаст лучшие классы. Во-вторых, я бы не стал беспокоиться об этом, если файлы WSDL сильно меняются. Вместо этого я бы поместил их в отдельный артефакт и построил их один раз, а затем импортировал в проект как свой артефакт. Единственное, что не было создано в этом архиве, должно быть тестовым кодом для тестирования конечных точек. Что касается сборки, то в конфигурацию плагина Maven, которую я использовал с большим успехом, вставлено ниже.
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${apache.cxf.version}</version>
<executions>
<execution>
<id>generate-sources</id>
<phase>generate-sources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated-sources/</sourceRoot>
<defaultOptions>
<catalog>${wsdlDir}/jax-ws-catalog.xml</catalog>
<bindingFiles>
<bindingFile>${wsdlDir}/jaxb-bindings.xml</bindingFile>
<bindingFile>${wsdlDir}/jaxws-bindings.xml</bindingFile>
</bindingFiles>
<noAddressBinding>true</noAddressBinding>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-xjc-Xbug671</extraarg>-->
<extraarg>-xjc-mark-generated</extraarg>
</extraargs>
</defaultOptions>
<wsdlOptions>
<wsdlOption>
<wsdl>${wsdlDir}/cis.wsdl</wsdl>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.cxf.xjcplugins</groupId>
<artifactId>cxf-xjc-bug671</artifactId>
<version>${apache.cxf.xjc.version}</version>
</dependency>
</dependencies>
</plugin>
Это настроено для генерации только из одного WSDL, но можно легко добавить больше WSDL, и я сделал это в других обстоятельствах.