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.
- Host: GitHub
- URL: https://github.com/vboxnick/yaml-codegen-maven
- Owner: VboxNick
- License: apache-2.0
- Created: 2019-12-23T20:11:32.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2026-01-13T20:12:11.000Z (about 1 month ago)
- Last Synced: 2026-01-13T22:20:04.681Z (about 1 month ago)
- Topics: code-generation, code-generator, codegen, freemarker, maven, maven-plugin, openapi, openapi-codegen, openapi-generator, yaml
- Language: Java
- Homepage:
- Size: 89.8 KB
- Stars: 2
- Watchers: 1
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.adoc
- License: LICENSE
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`
|===