forked from loafle/openapi-generator-original
* Fix environment variable support in successive Maven plugin executions System properties were retained across multiple successive executions, resulting in unpredictable behavior. Property values are now properly reset to their original value after plugin execution. Fixes #5350 * Add explanation to environment variable reset mechanism in Maven plugin
swagger-codegen-maven-plugin
A Maven plugin to support the swagger code generation project
Usage
Add to your build->plugins
section (default phase is generate-sources
phase)
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.2.2-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>src/main/resources/api.yaml</inputSpec>
<language>java</language>
<configOptions>
<sourceFolder>src/gen/java/main</sourceFolder>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
Followed by:
mvn clean compile
General Configuration parameters
inputSpec
- OpenAPI Spec file pathlanguage
- target generation languageoutput
- target output path (default is${project.build.directory}/generated-sources/swagger
)templateDirectory
- directory with mustache templatesaddCompileSourceRoot
- add the output directory to the project as a source root (true
by default)modelPackage
- the package to use for generated model objects/classesapiPackage
- the package to use for generated api objects/classesinvokerPackage
- the package to use for the generated invoker objectsmodelNamePrefix
andmodelNameSuffix
- Sets the pre- or suffix for model classes and enumsuseJaxbAnnotations
- enable Jaxb annotations inside the generated modelsconfigOptions
- a map of language-specific parameters (see below)configHelp
- dumps the configuration help for the specified library (generates no sources)ignoreFileOverride
- specifies the full path to a.swagger-codegen-ignore
used for pattern based overrides of generated outputsgenerateApis
- generate the apis (true
by default)generateApiTests
- generate the api tests (true
by default. Only available ifgenerateApis
istrue
)generateApiDocumentation
- generate the api documentation (true
by default. Only available ifgenerateApis
istrue
)generateModels
- generate the models (true
by default)modelsToGenerate
- A comma separated list of models to generate. All models is the default.generateModelTests
- generate the model tests (true
by default. Only available ifgenerateModels
istrue
)generateModelDocumentation
- generate the model documentation (true
by default. Only available ifgenerateModels
istrue
)generateSupportingFiles
- generate the supporting files (true
by default)supportingFilesToGenerate
- A comma separated list of supporting files to generate. All files is the default.
Custom Generator
Specifying a custom generator is a bit different. It doesn't support the classpath:/ syntax, but it does support the fully qualified name of the package. You can also specify your custom templates, which also get pulled in. Notice the dependency on a project, in the plugin scope. That would be your generator/template jar.
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>${swagger-codegen-maven-plugin-version}</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>src/main/resources/yaml/yamlfilename.yaml</inputSpec>
<!-- language file, like e.g. JavaJaxRSCodegen shipped with swagger -->
<language>com.my.package.for.GeneratorLanguage</language>
<templateDirectory>myTemplateDir</templateDirectory>
<output>${project.build.directory}/generated-sources</output>
<apiPackage>${default.package}.handler</apiPackage>
<modelPackage>${default.package}.model</modelPackage>
<invokerPackage>${default.package}.handler</invokerPackage>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.my.generator</groupId>
<artifactId>customgenerator</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
Sample configuration
- Please see an example configuration for using the plugin