Generera klientkod för SOAP och REST

Exempel på plugin för att generera klient-kod för SOAP- respektive REST-klienter.

SOAP

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>2.5.0</version> <!-- Enables fluent builder for generated classes --> <dependencies> <dependency> <groupId>org.jvnet.jaxb2_commons</groupId> <artifactId>jaxb2-fluent-api</artifactId> <version>3.0</version> </dependency> </dependencies> <executions> <execution> <id>xjc</id> <goals> <goal>xjc</goal> </goals> </execution> </executions> <configuration> <xjbSources> <!-- Kan behövas om dom genererade klasserna inte annoteras upp med @XmlRootElement(name = "ClassName") --> <xjbSource>${basedir}/src/main/resources/contracts/xjb/example.xjb</xjbSource> </xjbSources> <!-- Enable fluent --> <arguments> <argument>-Xfluent-api</argument> </arguments> <outputDirectory>${project.build.directory}/your-sources</outputDirectory> <sourceType>wsdl</sourceType> <sources> <source>${basedir}/src/main/resources/contracts/Example.wsdl</source> </sources> </configuration> </plugin>

 

example.xjb

<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0" xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" jaxb:extensionBindingPrefixes="xjc"> <jaxb:globalBindings> <xjc:simple/> </jaxb:globalBindings> </jaxb:bindings>

REST

<plugin> <groupId>org.openapitools</groupId> <artifactId>openapi-generator-maven-plugin</artifactId> <version>5.4.0</version> <executions> <execution> <id>some-id</id> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/src/main/resources/contracts/swagger.json</inputSpec> <output>${project.build.directory}/your-sources</output> <generatorName>spring</generatorName> <generateApis>false</generateApis> <configOptions> <apiPackage>somePackage</apiPackage> <dateLibrary>java8</dateLibrary> <generateSupportingFiles>false</generateSupportingFiles> <library>microprofile</library> </configOptions> </configuration> </execution> </executions> </plugin>

Notera att med generatorName satt till spring så genereras klientkod som använder annoteringar för OpenAPI v3.x. För att generera klientkod som använder annoteringar för v2.x bör java användas.

Problem att IDE:t inte hittar genererad kod

I vissa fall hittar inte IDE:n genererad kod och det kan då behövas konfigureras upp så att katalogen märks upp som en “source-folder”