Генерация классов JAX-WS из файла WSDL с помощью плагина Maven с Java11
В Java 11 JAX-WS был удален из JDK. Это предотвращает легкую генерацию классов JAX-WS с помощью плагина Maven, используя wsimport
под капотом. Я использую следующую конфигурацию для плагина Maven org.codehaus.mojo:jaxws-maven-plugin
,
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<extension>true</extension>
<packageName>tech.myproject.service</packageName>
<wsdlFiles>
<wsdlFile>${basedir}/src/main/resources/wsdl/service.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>/wsdl/service.wsdl</wsdlLocation>
</configuration>
</execution>
</executions>
</plugin>
Есть ли простой способ установить wsimport или использовать другой плагин, объединяющий специфичный для архитектуры wsimport, для продолжения генерации классов WSDL?
0 ответов
Новая версия jaxws-maven-plugin
( ссылка) может генерировать классы Java с Java 11, используя плагин следующим образом:
<build>
<plugins>
...
<plugin>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<id>generate-java-sources</id>
<phase>process-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<extension>true</extension>
<wsdlFiles>
<wsdlFile>${project.build.directory}/generated/wsdl/MyService.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>/wsdl/MyService.wsdl</wsdlLocation>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.jws</groupId>
<artifactId>javax.jws-api</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Альтернативный плагин также может быть плагином cxf-codegen от Apache CXF ( ссылка)
Нашел это - https://github.com/mojohaus/jaxws-maven-plugin/issues/54 Я использовал ту же конфигурацию, что и для org.jvnet.jax-ws-commons jaxws-maven-plugin. Думаю, что это то же самое, что и org.codehaus.mojo, но не уверен на 100%.
Протестировано с JDK 11. Все элементы XSD, порты и сервисы генерируются. Вам также нужно добавить несколько зависимостей в ваш pom. Минимум:
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.main.javaee-api</groupId>
<artifactId>javax.jws</artifactId>
<version>3.1.2.2</version>
</dependency>