Toolkit to build SDK from OpenAPI v.3 specification
APACHE-2.0 License
APICROSS is a tool to generate source code from OpenAPI 3.0 API specification.
additionalProperties
(See here)oneOf
, allOf
(See here)minProperties
, maxProperties
and required
properties validation support.IRead*
interfaces to support Hexagonal architecture (See here) <build>
<plugins>
<plugin>
<groupId>io.github.itroadlabs</groupId>
<artifactId>apicross-maven-plugin</artifactId>
<version>${project.version}</version>
<executions>
<execution>
<id>generate-api-classes</id>
<phase>generate-sources</phase>
<goals>
<goal>generate-code</goal>
</goals>
<configuration>
<specUrl>file:///${project.basedir}/../api-specifications/api.yaml</specUrl>
<generatorClassName>io.github.itroadlabs.apicross.springmvc.SpringMvcCodeGenerator</generatorClassName>
<generatorOptions implementation="io.github.itroadlabs.apicross.springmvc.SpringMvcCodeGeneratorOptions">
<apiHandlerPackage>com.myapp.web.handlers</apiHandlerPackage>
<apiModelPackage>com.myapp.web.models</apiModelPackage>
<writeSourcesTo>${project.build.directory}/generated-sources/java</writeSourcesTo>
</generatorOptions>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>io.github.itroadlabs</groupId>
<artifactId>apicross-springmvc</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Option | Type | Description |
---|---|---|
writeSourcesTo | String | Directory to write generated sources |
generateOnlyModels | boolean | Generated only API models (if true ) but not requests handlers. Default - false
|
skipTags | Set | Set of OpenAPI tags to be skipped from source code generation. Operations with such tags will be skipped within code generation |
generateOnlyTags | Set | Set of OpenAPI tags to be included int source code generation. Only operations with such tags will be included into code generation |
Option | Type | Description |
---|---|---|
apiHandlerPackage | String | Java package name for API handlers (Java interfaces for Spring MVC Controllers) |
apiModelPackage | String | Java package name for API models (request/response) |
modelClassNameSuffix | String | Suffix for API model Java class name |
modelClassNamePrefix | String | Prefix for API model Java class name |
requestsHandlerMethodNameResolverClassName | String | Class implementing RequestsHandlerMethodNameResolver interface to resolve API Handler class name. See details here. Default is DefaultRequestsHandlerMethodNameResolver
|
requestsHandlerTypeNameResolverClassName | String | Class implementing RequestsHandlerTypeNameResolver interface to resolve API Handler method name. Default is DefaultRequestsHandlerTypeNameResolver
|
propertyNameResolverClassName | String | Class implementing PropertyNameResolver interface to resolve data model class property name. Default is DefaultPropertyAndParameterNameResolver
|
parameterNameResolverClassName | String | Class implementing PropertyNameResolver interface to resolve URI parameter name. Default is DefaultPropertyAndParameterNameResolver
|
dataModelsExternalTypesMap | Map | Defines replacement for data model schema by specified Java class. See details here |
dataModelsInterfacesMap | Map | Defines Java interface for class generated to represend specified schema. See details here |
queryObjectsInterfacesMap | Map | Java interfaces to be implemented for specified query object. See details here |
globalQueryObjectsInterfaces | Set | Java interfaces to be implemented for all generated query opject classes. See details here. |
useJsonNullable | boolean | Generate Java classes for API models with JsonNullable class usage (true ) or not (false ). The default is true . Feature description here
|
enableApicrossJavaBeanValidationSupport | boolean | Enable option to add APICROSS custom annotation to the api model class to perform required fields validation. Default is false . See details here. |
enableDataModelReadInterfaces | boolean | Enable generation for IRead* interfaces. Default is false . |
apiModelReadInterfacesPackage | String | Java package name for IRead* interfaces |
enableSpringSecurityAuthPrincipal | boolean | Enable for API Handlers methods Spring Security Authorization parameter |
alternativeTemplatesPath | List | Path to files with alternative templates. Please read about feature here |