A Maven plugin to support the swagger code generation project
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.3.1</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>${project.basedir}/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
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 enumslocalVariablePrefix
- adds a prefix for all generated local variables. Helps if your API has method names that conflict with local variable names.withXml
- enable XML annotations inside the generated models and API (only works with Javalanguage
and libraries that provide support for JSON and XML)configOptions
- 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.skip
- skip code generation (false
by default. Can also be set globally through thecodegen.skip
property)
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>${project.basedir}/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>
- Please see an example configuration for using the plugin