java - 无法使用 openapi-generator-gradle-plugin 生成接口(interface)

标签 java spring-boot gradle openapi openapi-generator

我正在尝试使用 openapi-generator-gradle-plugin 生成模型和 Controller 接口(interface)。

我遇到的问题是插件生成类而不是接口(interface)。

生成的类如下所示:

    public class DossiersApi {
        private ApiClient localVarApiClient;
    
        public DossiersApi() {
            this(Configuration.getDefaultApiClient());
        }
    
        public DossiersApi(ApiClient apiClient) {
            this.localVarApiClient = apiClient;
        }
    
        public ApiClient getApiClient() {
            return localVarApiClient;
        }
    
        public void setApiClient(ApiClient apiClient) {
            this.localVarApiClient = apiClient;
        }
    
        /**
         * Build call for getDossier
         * @param dossierId Unique identifier of the dossier. (required)
         * @param _callback Callback for upload/download progress
         * @return Call to execute
         * @throws ApiException If fail to serialize the request body object
         * @http.response.details
         <table summary="Response Details" border="1">
            <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
             ...
         </table>
         */
        public okhttp3.Call getDossierCall(Long Id, final ApiCallback _callback) throws ApiException {
            Object localVarPostBody = null; 
    ...

当我尝试生成一个接口(interface)时,以便我可以在我的其余 Controller 中实现它。 在查看配置时,我假设 interfaceOnly 参数将使 openapi-generator-gradle-plugin 生成接口(interface)而不是类,但在我的情况下它不起作用,我不确定是什么问题。

我已经检查过这一点,但没有一个解决方案对我有用: Generate Java Spring API from OpenAPI 3 ,

Generate only REST interfaces for spring boot with openapi-generator-gradle-plugin

我的 gradle.build 看起来像这样:

plugins {
    id 'org.springframework.boot' version '2.6.1'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id "org.openapi.generator" version "5.1.1"
}

group = 'com.cs'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
targetCompatibility = '17'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.postgresql:postgresql:42.1.4'
    implementation 'javax.validation:validation-api:2.0.1.Final'
    implementation 'org.springframework.boot:spring-boot-starter-security:2.6.1'
    implementation 'io.swagger.core.v3:swagger-annotations:2.1.11'
    implementation 'io.springfox:springfox-swagger2:3.0.0'
    implementation 'io.springfox:springfox-swagger-ui:3.0.0'
    implementation 'org.openapitools:jackson-databind-nullable:0.2.2'
    implementation 'io.jsonwebtoken:jjwt:0.9.1'
    implementation 'org.modelmapper:modelmapper:2.4.4'


    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

test {
    useJUnitPlatform()
}

openApiGenerate {
    generatorName = "java"
    inputSpec = "$rootDir/src/main/resources/swagger.yaml".toString()
    outputDir = "$buildDir/generated".toString()
    apiPackage = "org.openapi.example.api"
    invokerPackage = "org.openapi.example.invoker"
    modelNameSuffix = "Dto"
    generateApiTests = false
    generateModelTests = false
    modelPackage = "org.openapi.example.model"
    configOptions = [
            dateLibrary: 'java8',
            interfaceOnly: 'true',
            skipDefaultInterface: 'true',
            useApiIgnore:'fales',
            swaggerAnnotations: 'true',
    ]
    globalProperties = [
            modelDocs: 'false',
            apis: '',
            models: ''
    ]
}

请注意,我还尝试将 openapi 生成器降级到版本 5.1.1(我从 5.3.0 开始),但这并没有解决问题。 有人知道如何解决这个问题吗?

谢谢。

最佳答案

java generator (简单地)不支持(优雅地(? ->调试/详细!))interfaceOnly选项。

尝试generatorName = "spring"或引用 parent directory 中记录的生成器之一.

关于java - 无法使用 openapi-generator-gradle-plugin 生成接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70411327/

相关文章:

java - 在文本字段中插入值 - struts2+liferay

java - *** 中的字段 authenticationManager 需要找不到类型为 'org.springframework.security.authentication.AuthenticationManager' 的 bean

java - Junit 5标签不适用于Gradle 6.5.1

java - 如何使用 BouncyCaSTLe 获取根 CA 和最终实体之间的证书路径?

java - 关于提供集成 api 的建议

Spring @Scheduled - 并发运行

spring-boot - 如何使用 spring data cassandra 创建一组用户定义类型?

Android项目如何使用/合并多个AndroidManifest.xml

安卓测试 : Dagger2 + Gradle

java - 如何使用 Apache Edgent 过滤元组流