diff --git a/docs/generators/java.md b/docs/generators/java.md
index 050d887557db..47f6b3669772 100644
--- a/docs/generators/java.md
+++ b/docs/generators/java.md
@@ -34,6 +34,7 @@ sidebar_label: java
|library|library template (sub-template) to use|
- **jersey1**
- HTTP client: Jersey client 1.19.x. JSON processing: Jackson 2.9.x. Enable Java6 support using '-DsupportJava6=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. IMPORTANT NOTE: jersey 1.x is no longer actively maintained so please upgrade to 'jersey2' or other HTTP libaries instead.
- **jersey2**
- HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.9.x
- **feign**
- HTTP client: OpenFeign 10.x. JSON processing: Jackson 2.9.x.
- **okhttp-gson**
- [DEFAULT] HTTP client: OkHttp 3.x. JSON processing: Gson 2.8.x. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.
- **retrofit2**
- HTTP client: OkHttp 3.x. JSON processing: Gson 2.x (Retrofit 2.3.0). Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x)
- **resttemplate**
- HTTP client: Spring RestTemplate 4.x. JSON processing: Jackson 2.9.x
- **webclient**
- HTTP client: Spring WebClient 5.x. JSON processing: Jackson 2.9.x
- **resteasy**
- HTTP client: Resteasy client 3.x. JSON processing: Jackson 2.9.x
- **vertx**
- HTTP client: VertX client 3.x. JSON processing: Jackson 2.9.x
- **google-api-client**
- HTTP client: Google API client 1.x. JSON processing: Jackson 2.9.x
- **rest-assured**
- HTTP client: rest-assured : 4.x. JSON processing: Gson 2.x or Jackson 2.10.x. Only for Java 8
- **native**
- HTTP client: Java native HttpClient. JSON processing: Jackson 2.9.x. Only for Java11+
- **microprofile**
- HTTP client: Microprofile client 1.x. JSON processing: Jackson 2.9.x
|okhttp-gson|
|licenseName|The name of the license| |Unlicense|
|licenseUrl|The URL of the license| |http://unlicense.org|
+|microprofileFramework|Framework for microprofile. Possible values "kumuluzee"| |null|
|modelPackage|package for generated models| |org.openapitools.client.model|
|parcelableModel|Whether to generate models for Android that implement Parcelable with the okhttp-gson library.| |false|
|parentArtifactId|parent artifactId in generated pom N.B. parentGroupId, parentArtifactId and parentVersion must all be specified for any of them to take effect| |null|
diff --git a/docs/generators/jaxrs-cxf-cdi.md b/docs/generators/jaxrs-cxf-cdi.md
index 11b506810493..867313e4725d 100644
--- a/docs/generators/jaxrs-cxf-cdi.md
+++ b/docs/generators/jaxrs-cxf-cdi.md
@@ -33,7 +33,7 @@ sidebar_label: jaxrs-cxf-cdi
|invokerPackage|root package for generated code| |org.openapitools.api|
|java8|Use Java8 classes instead of third party equivalents. Starting in 5.x, JDK8 is the default and the support for JDK7, JDK6 has been dropped|- **true**
- Use Java 8 classes such as Base64
- **false**
- Various third party libraries as needed
|true|
|legacyDiscriminatorBehavior|This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.|- **true**
- The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
- **false**
- The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
|true|
-|library|library template (sub-template)|- **<default>**
- JAXRS spec only, to be deployed in an app server (TomEE, JBoss, WLS, ...)
- **quarkus**
- Server using Quarkus
- **thorntail**
- Server using Thorntail
- **openliberty**
- Server using Open Liberty
- **helidon**
- Server using Helidon
|<default>|
+|library|library template (sub-template)|- **<default>**
- JAXRS spec only, to be deployed in an app server (TomEE, JBoss, WLS, ...)
- **quarkus**
- Server using Quarkus
- **thorntail**
- Server using Thorntail
- **openliberty**
- Server using Open Liberty
- **helidon**
- Server using Helidon
- **kumuluzee**
- Server using KumuluzEE
|<default>|
|licenseName|The name of the license| |Unlicense|
|licenseUrl|The URL of the license| |http://unlicense.org|
|modelPackage|package for generated models| |org.openapitools.model|
diff --git a/docs/generators/jaxrs-spec.md b/docs/generators/jaxrs-spec.md
index 477c1324dc09..223d908f214a 100644
--- a/docs/generators/jaxrs-spec.md
+++ b/docs/generators/jaxrs-spec.md
@@ -33,7 +33,7 @@ sidebar_label: jaxrs-spec
|invokerPackage|root package for generated code| |org.openapitools.api|
|java8|Use Java8 classes instead of third party equivalents. Starting in 5.x, JDK8 is the default and the support for JDK7, JDK6 has been dropped|- **true**
- Use Java 8 classes such as Base64
- **false**
- Various third party libraries as needed
|true|
|legacyDiscriminatorBehavior|This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.|- **true**
- The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
- **false**
- The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
|true|
-|library|library template (sub-template)|- **<default>**
- JAXRS spec only, to be deployed in an app server (TomEE, JBoss, WLS, ...)
- **quarkus**
- Server using Quarkus
- **thorntail**
- Server using Thorntail
- **openliberty**
- Server using Open Liberty
- **helidon**
- Server using Helidon
|<default>|
+|library|library template (sub-template)|- **<default>**
- JAXRS spec only, to be deployed in an app server (TomEE, JBoss, WLS, ...)
- **quarkus**
- Server using Quarkus
- **thorntail**
- Server using Thorntail
- **openliberty**
- Server using Open Liberty
- **helidon**
- Server using Helidon
- **kumuluzee**
- Server using KumuluzEE
|<default>|
|licenseName|The name of the license| |Unlicense|
|licenseUrl|The URL of the license| |http://unlicense.org|
|modelPackage|package for generated models| |org.openapitools.model|
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java
index 0190175004a8..5610a2ced912 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java
@@ -22,6 +22,7 @@
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.openapitools.codegen.*;
+import org.openapitools.codegen.config.GlobalSettings;
import org.openapitools.codegen.languages.features.BeanValidationFeatures;
import org.openapitools.codegen.languages.features.GzipFeatures;
import org.openapitools.codegen.languages.features.PerformBeanValidationFeatures;
@@ -60,12 +61,16 @@ public class JavaClientCodegen extends AbstractJavaCodegen
public static final String USE_RUNTIME_EXCEPTION = "useRuntimeException";
public static final String USE_REFLECTION_EQUALS_HASHCODE = "useReflectionEqualsHashCode";
public static final String CASE_INSENSITIVE_RESPONSE_HEADERS = "caseInsensitiveResponseHeaders";
+ public static final String MICROPROFILE_FRAMEWORK = "microprofileFramework";
public static final String USE_ABSTRACTION_FOR_FILES = "useAbstractionForFiles";
public static final String PLAY_24 = "play24";
public static final String PLAY_25 = "play25";
public static final String PLAY_26 = "play26";
+ public static final String MICROPROFILE_DEFAULT = "default";
+ public static final String MICROPROFILE_KUMULUZEE = "kumuluzee";
+
public static final String FEIGN = "feign";
public static final String GOOGLE_API_CLIENT = "google-api-client";
public static final String JERSEY1 = "jersey1";
@@ -91,7 +96,9 @@ public class JavaClientCodegen extends AbstractJavaCodegen
// (mustache does not allow for boolean operators so we need this extra field)
protected boolean doNotUseRx = true;
protected boolean usePlayWS = false;
- protected String playVersion = PLAY_26;
+ protected String playVersion = PLAY_25;
+ protected String microprofileFramework = MICROPROFILE_DEFAULT;
+
protected boolean asyncNative = false;
protected boolean parcelableModel = false;
protected boolean useBeanValidation = false;
@@ -142,6 +149,7 @@ public JavaClientCodegen() {
cliOptions.add(CliOption.newBoolean(ASYNC_NATIVE, "If true, async handlers will be used, instead of the sync version"));
cliOptions.add(CliOption.newBoolean(USE_REFLECTION_EQUALS_HASHCODE, "Use org.apache.commons.lang3.builder for equals and hashCode in the models. WARNING: This will fail under a security manager, unless the appropriate permissions are set up correctly and also there's potential performance impact."));
cliOptions.add(CliOption.newBoolean(CASE_INSENSITIVE_RESPONSE_HEADERS, "Make API response's headers case-insensitive. Available on " + OKHTTP_GSON + ", " + JERSEY2 + " libraries"));
+ cliOptions.add(CliOption.newString(MICROPROFILE_FRAMEWORK, "Framework for microprofile. Possible values \"kumuluzee\""));
cliOptions.add(CliOption.newBoolean(USE_ABSTRACTION_FOR_FILES, "Use alternative types instead of java.io.File to allow passing bytes without a file on disk. Available on " + RESTTEMPLATE + " library"));
supportedLibraries.put(JERSEY1, "HTTP client: Jersey client 1.19.x. JSON processing: Jackson 2.9.x. Enable Java6 support using '-DsupportJava6=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. IMPORTANT NOTE: jersey 1.x is no longer actively maintained so please upgrade to 'jersey2' or other HTTP libaries instead.");
@@ -158,6 +166,7 @@ public JavaClientCodegen() {
supportedLibraries.put(NATIVE, "HTTP client: Java native HttpClient. JSON processing: Jackson 2.9.x. Only for Java11+");
supportedLibraries.put(MICROPROFILE, "HTTP client: Microprofile client 1.x. JSON processing: Jackson 2.9.x");
+
CliOption libraryOption = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use");
libraryOption.setEnum(supportedLibraries);
// set okhttp-gson as the default
@@ -209,7 +218,6 @@ public void processOpts() {
} else if (MICROPROFILE.equals(getLibrary()) && "threetenbp".equals(dateLibrary)) {
dateLibrary = "legacy";
}
-
super.processOpts();
// RxJava
@@ -254,6 +262,17 @@ public void processOpts() {
}
additionalProperties.put(PLAY_VERSION, playVersion);
+ // Microprofile framework
+ if (additionalProperties.containsKey(MICROPROFILE_FRAMEWORK)) {
+ this.setMicroprofileFramework(additionalProperties.get(MICROPROFILE_FRAMEWORK).toString());
+
+ if (!MICROPROFILE_KUMULUZEE.equals(microprofileFramework)) {
+ throw new RuntimeException("Ivalid microprofileFramework '{}'. Must be 'kumuluzee' or none.");
+ }
+
+ }
+ additionalProperties.put(MICROPROFILE_FRAMEWORK, microprofileFramework);
+
if (additionalProperties.containsKey(ASYNC_NATIVE)) {
this.setAsyncNative(convertPropertyToBooleanAndWriteBack(ASYNC_NATIVE));
}
@@ -448,6 +467,12 @@ public void processOpts() {
supportingFiles.add(new SupportingFile("api_exception.mustache", apiExceptionFolder, "ApiException.java"));
supportingFiles.add(new SupportingFile("api_exception_mapper.mustache", apiExceptionFolder, "ApiExceptionMapper.java"));
serializationLibrary = "none";
+
+ if (microprofileFramework.equals(MICROPROFILE_KUMULUZEE)){
+ supportingFiles.add(new SupportingFile("kumuluzee.pom.mustache", "", "pom.xml"));
+ supportingFiles.add(new SupportingFile("kumuluzee.config.yaml.mustache", "src/main/resources", "config.yaml"));
+ supportingFiles.add(new SupportingFile("kumuluzee.beans.xml.mustache", "src/main/resources/META-INF", "beans.xml"));
+ }
} else {
LOGGER.error("Unknown library option (-l/--library): " + getLibrary());
}
@@ -843,6 +868,10 @@ public void setAsyncNative(boolean asyncNative) {
this.asyncNative = asyncNative;
}
+ public void setMicroprofileFramework(String microprofileFramework) {
+ this.microprofileFramework = microprofileFramework;
+ }
+
public void setParcelableModel(boolean parcelableModel) {
this.parcelableModel = parcelableModel;
}
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java
index 7a2ebed10b3d..6a05221b6ab6 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaJAXRSSpecServerCodegen.java
@@ -44,6 +44,7 @@ public class JavaJAXRSSpecServerCodegen extends AbstractJavaJAXRSServerCodegen {
public static final String THORNTAIL_LIBRARY = "thorntail";
public static final String OPEN_LIBERTY_LIBRARY = "openliberty";
public static final String HELIDON_LIBRARY = "helidon";
+ public static final String KUMULUZEE_LIBRARY = "kumuluzee";
private boolean interfaceOnly = false;
private boolean returnResponse = false;
@@ -99,6 +100,7 @@ public JavaJAXRSSpecServerCodegen() {
supportedLibraries.put(THORNTAIL_LIBRARY, "Server using Thorntail");
supportedLibraries.put(OPEN_LIBERTY_LIBRARY, "Server using Open Liberty");
supportedLibraries.put(HELIDON_LIBRARY, "Server using Helidon");
+ supportedLibraries.put(KUMULUZEE_LIBRARY, "Server using KumuluzEE");
library.setEnum(supportedLibraries);
cliOptions.add(library);
@@ -127,13 +129,16 @@ public void processOpts() {
additionalProperties.remove(RETURN_RESPONSE);
}
}
- if (QUARKUS_LIBRARY.equals(library) || THORNTAIL_LIBRARY.equals(library) || HELIDON_LIBRARY.equals(library) || OPEN_LIBERTY_LIBRARY.equals(library)) {
+ if (QUARKUS_LIBRARY.equals(library) || THORNTAIL_LIBRARY.equals(library) || HELIDON_LIBRARY.equals(library) || OPEN_LIBERTY_LIBRARY.equals(library) || KUMULUZEE_LIBRARY.equals(library)) {
useSwaggerAnnotations = false;
} else {
if (additionalProperties.containsKey(USE_SWAGGER_ANNOTATIONS)) {
useSwaggerAnnotations = Boolean.valueOf(additionalProperties.get(USE_SWAGGER_ANNOTATIONS).toString());
}
}
+ if (KUMULUZEE_LIBRARY.equals(library)){
+ super.setSourceFolder("src/main/java");
+ }
writePropertyBack(USE_SWAGGER_ANNOTATIONS, useSwaggerAnnotations);
if (additionalProperties.containsKey(GENERATE_BUILDERS)) {
@@ -143,7 +148,7 @@ public void processOpts() {
if (additionalProperties.containsKey(OPEN_API_SPEC_FILE_LOCATION)) {
openApiSpecFileLocation = additionalProperties.get(OPEN_API_SPEC_FILE_LOCATION).toString();
- } else if(QUARKUS_LIBRARY.equals(library) || THORNTAIL_LIBRARY.equals(library) || HELIDON_LIBRARY.equals(library)) {
+ } else if(QUARKUS_LIBRARY.equals(library) || THORNTAIL_LIBRARY.equals(library) || HELIDON_LIBRARY.equals(library) || KUMULUZEE_LIBRARY.equals(library)) {
openApiSpecFileLocation = "src/main/resources/META-INF/openapi.yaml";
} else if(OPEN_LIBERTY_LIBRARY.equals(library)) {
openApiSpecFileLocation = "src/main/webapp/META-INF/openapi.yaml";
@@ -213,7 +218,9 @@ public void processOpts() {
.doNotOverwrite());
supportingFiles.add(new SupportingFile("beans.xml.mustache", "src/main/webapp/META-INF", "beans.xml")
.doNotOverwrite());
- }
+ } else if(KUMULUZEE_LIBRARY.equals(library)) {
+ supportingFiles.add(new SupportingFile("config.yaml.mustache", "src/main/resources", "config.yaml"));
+ }
}
@Override
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/kumuluzee.beans.xml.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/kumuluzee.beans.xml.mustache
new file mode 100644
index 000000000000..29549d01d2c2
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/kumuluzee.beans.xml.mustache
@@ -0,0 +1,5 @@
+
+
+
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/kumuluzee.config.yaml.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/kumuluzee.config.yaml.mustache
new file mode 100644
index 000000000000..90f5237eb99c
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/kumuluzee.config.yaml.mustache
@@ -0,0 +1,10 @@
+kumuluzee:
+ server:
+ http:
+ port: 8081
+
+ rest-client:
+ registrations:
+ {{#apiInfo}}{{#apis}}{{#operations}}- class: {{{invokerPackage}}}.{{{classname}}}
+ url: http://localhost:8080/v2
+ {{/operations}}{{/apis}}{{/apiInfo}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/kumuluzee.pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/kumuluzee.pom.mustache
new file mode 100644
index 000000000000..ac235b7edf59
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/microprofile/kumuluzee.pom.mustache
@@ -0,0 +1,98 @@
+
+ 4.0.0
+
+ {{groupId}}
+ {{artifactId}}
+ jar
+ {{artifactId}}
+ 1.0.0-SNAPSHOT
+
+
+ 1.8
+ 1.8
+ UTF-8
+
+ 3.9.0
+ 1.2.3
+ 1.4.1
+ 3.2.6
+ 4.13
+ 2.28
+
+
+
+
+
+ com.kumuluz.ee
+ kumuluzee-bom
+ ${kumuluzee.version}
+ pom
+ import
+
+
+
+
+
+
+ com.kumuluz.ee
+ kumuluzee-core
+
+
+ com.kumuluz.ee
+ kumuluzee-servlet-jetty
+
+
+ com.kumuluz.ee
+ kumuluzee-jax-rs-jersey
+
+
+ com.kumuluz.ee
+ kumuluzee-cdi-weld
+
+
+ com.kumuluz.ee
+ kumuluzee-json-p-jsonp
+
+
+ com.kumuluz.ee
+ kumuluzee-json-b-yasson
+
+
+ com.kumuluz.ee.rest-client
+ kumuluzee-rest-client
+ ${kumuluzee-rest-client.version}
+
+
+ org.apache.cxf
+ cxf-rt-rs-extension-providers
+ ${cxf-rt-rs-extension-providers.version}
+
+
+ junit
+ junit
+ ${junit-version}
+ test
+
+
+
+
+
+
+ com.kumuluz.ee
+ kumuluzee-maven-plugin
+ ${kumuluzee.version}
+
+
+ package
+
+ repackage
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/README.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/README.mustache
new file mode 100644
index 000000000000..deea381ac94e
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/README.mustache
@@ -0,0 +1,42 @@
+# JAX-RS server with OpenAPI using KumuluzEE
+
+## Overview
+This server was generated by the [OpenAPI Generator](https://openapi-generator.tech) project. By using an
+[OpenAPI-Spec](https://openapis.org), you can easily generate a server stub.
+
+This is an example of building a OpenAPI-enabled JAX-RS server.
+This example uses the [JAX-RS](https://jax-rs-spec.java.net/) framework and
+the [Eclipse-MicroProfile-OpenAPI](https://github.com/eclipse/microprofile-open-api) addition.
+
+The pom file is configured to use [KumuluzEE](https://ee.kumuluz.com/) as application server.
+
+{{#interfaceOnly}}
+ This project produces a jar that defines some interfaces.
+ The jar can be used in combination with an other project providing the implementation.
+{{/interfaceOnly}}
+
+{{^interfaceOnly}}
+To build the server, run this maven command:
+
+```bash
+mvn clean package
+```
+
+To run the server, run this maven command:
+
+```bash
+java -jar target/${project.build.finalName}.jar
+```
+
+You can then call your server endpoints under:
+
+```
+http://localhost:8080
+```
+
+Example endpoint:
+
+```
+http://localhost:8080/v2/user/example
+```
+{{/interfaceOnly}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/config.yaml.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/config.yaml.mustache
new file mode 100644
index 000000000000..44562fef81ee
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/config.yaml.mustache
@@ -0,0 +1,5 @@
+kumuluzee:
+ name: {{artifactId}}
+ version: {{artifactVersion}}
+ env:
+ name: dev
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/pom.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/pom.mustache
new file mode 100644
index 000000000000..0afbe8513a05
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/kumuluzee/pom.mustache
@@ -0,0 +1,67 @@
+
+
+ 4.0.0
+
+ {{groupId}}
+ {{artifactId}}
+ {{artifactVersion}}
+
+ Automatically generated KumuluzEE microservice
+ The microservice was generated automatically with the OpenAPI Generator project
+
+
+ 1.8
+ 1.8
+ UTF-8
+
+ 3.9.0
+
+
+
+
+
+ com.kumuluz.ee
+ kumuluzee-bom
+ ${kumuluzee.version}
+ pom
+ import
+
+
+
+
+
+
+ com.kumuluz.ee
+ kumuluzee-core
+
+
+ com.kumuluz.ee
+ kumuluzee-servlet-jetty
+
+
+ com.kumuluz.ee
+ kumuluzee-jax-rs-jersey
+
+
+
+
+
+
+ com.kumuluz.ee
+ kumuluzee-maven-plugin
+ ${kumuluzee.version}
+
+
+ package
+
+ repackage
+
+
+
+
+
+
+
+
\ No newline at end of file