Description
Description
Generating a client for language Java, library Microprofile, in a maven project, the compilation failed due to additional packages that are not included in microprofile dependencies. To be specific:
- Date library are always JodaTime, even if something different is specified
- javax.xml.bind are always imported, even if xml is set to false
- package org.apache.cxf.jaxrs.ext.multipart is always declared as import
Point 2 and 3 are packages that are not used in the code.
It's possible to fix these behavior, to avoid to have to add not necessary dependencies to the project?
openapi-generator version
openapi-generator 4.3.0 used
OpenAPI declaration file content or url
To try to make it work at least locally, this is what i found in the code:
-
JodaTime:
in modules\openapi-generator\src\main\java\org\openapitools\codegen\languages\JavaClientCodegen.java:- comment line 422 (importMapping.put("LocalDate", "org.joda.time.LocalDate");)
- comment line 202-203
} else if (MICROPROFILE.equals(getLibrary())) {
dateLibrary = "legacy";
to disable the forcing of JodaLibraries as api, and it works perfectly, for JAVA8. Not tested for other date approach
-
XML package import always present:
In modules\openapi-generator\src\main\resources\Java\libraries\microprofile\pojo.mustache i replaced
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;with
{{#withXml}}
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.XmlEnum;
import javax.xml.bind.annotation.XmlEnumValue;
{{/withXml}} -
For cxf multipart:
In modules\openapi-generator\src\main\resources\Java\libraries\microprofile\api.mustache removed
{{^disableMultipart}}
import org.apache.cxf.jaxrs.ext.multipart.*;
{{/disableMultipart}}
In this case, to make it works i can only remove these three lines; also this disableMultiPart is not clear from where it came from.
Command line used for generation
Maven project, mvn compile generate the error
Steps to reproduce
Execute a mvn compile on the sample projects sample.zip
Related issues/PRs
I haven't found any related issues/PRs
Suggest a fix/enhancement
fix/enhancement described previously