An open API service indexing awesome lists of open source software.

https://github.com/vboxnick/yaml-codegen-maven

A plugin to generate any files from FreeMarker templates and YAML.
https://github.com/vboxnick/yaml-codegen-maven

code-generation code-generator codegen freemarker maven maven-plugin openapi openapi-codegen openapi-generator yaml

Last synced: about 1 month ago
JSON representation

A plugin to generate any files from FreeMarker templates and YAML.

Awesome Lists containing this project

README

          

image:https://travis-ci.com/VboxNick/yaml-codegen-maven.svg?branch=master["Build Status", link="https://travis-ci.com/VboxNick/yaml-codegen-maven"]

==== Basic usage

.Plugin configuration in pom.xml
[source,xml]
----



com.github.vboxnick
yaml-codegen-maven




${project.basedir}/src/resources/schema/company.yml


${project.basedir}/src/resources/templates/java-pojo.ftl
${project.basedir}/target/generated-sources/java/com/example/Company.java


${project.basedir}/src/resources/templates/ts-pojo.ftl
${project.basedir}/target/generated-sources/ts/company.ts








generate

generate-sources



----

.Model definition: company.yml
[source,yaml]
----
fields:
- name: id
type: long

- name: shortName
type: string
----

.Template: java-pojo.ftl
[source,injectedfreemarker]
----
<#assign pojoClassName = output.file.name?keep_before(".")>
<#assign fields = model.content.fields>

public final class ${pojoClassName} {

<#list fields as f>
private final ${f.type?cap_first} ${f.name};
#list>

public ${pojoClassName}(<#list fields as f>final ${f.type?cap_first} ${f.name}<#sep>, #sep>#list>) {
<#list fields as f>
this.${f.name} = ${f.name};
#list>
}

<#list fields as f>
public ${f.type?cap_first} get${f.name?cap_first}() {
return ${f.name};
}

#list>
}
----

.Output: Company.java
[source, java]
----

public final class Company {

private final Long id;
private final String shortName;

public Company(final Long id, final String shortName) {
this.id = id;
this.shortName = shortName;
}

public Long getId() {
return id;
}

public String getShortName() {
return shortName;
}

}
----

==== Built-in variables

|===
|Variable |Type

|`model`
|`Map`

|`model.file`
|`java.io.File`

|`model.content`
|`Map`

|`output`
|`Map`

|`output.file`
|`java.io.File`

|`tmpl.file`
|`java.io.File`

|`tmpl.vars`
|`Map`

|===