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 (trueby 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 objectsmodelNamePrefixandmodelNameSuffix- 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-ignoreused for pattern based overrides of generated outputsgenerateApis- generate the apis (trueby default)generateApiTests- generate the api tests (trueby default. Only available ifgenerateApisistrue)generateApiDocumentation- generate the api documentation (trueby default. Only available ifgenerateApisistrue)generateModels- generate the models (trueby default)modelsToGenerate- A comma separated list of models to generate. All models is the default.generateModelTests- generate the model tests (trueby default. Only available ifgenerateModelsistrue)generateModelDocumentation- generate the model documentation (trueby default. Only available ifgenerateModelsistrue)generateSupportingFiles- generate the supporting files (trueby 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