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.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
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 enums.configOptions
- a map of language-specific parameters (see below)configHelp
- dumps the configuration help for the specified library (generates no sources)
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>
- Please see an example configuration for using the plugin