当前位置: 首页 > 知识库问答 >
问题:

Swagger Gradle插件在构建过程中没有正确生成Springmvc的openapi.json文件

令狐灿
2023-03-14

我想导入用swagger gradle插件创建的API定义文件。我有一个Spring启动mvc应用程序。我似乎无法获得正确的解析设置来生成openAPI. json。gradle解析任务创建一个空文件,其中只有"openapi":"3.0.1"标记和值。解决的任务不是拿起昂首阔步和mvc api注释。你能给我指出正确的方向,为昂首阔步的gradle解决任务找到正确的配置设置吗?

应用程序显示Spring-UI留档没有问题时,应用程序正在运行,我查看swagger-uiendpoint。问题是在gradle构建期间有一个单独的gradle任务来生成openAPI. json文件,我想将该文件作为应用程序API目录的一部分导入SwaggerHub。

我在任何地方都找不到关于如何配置swagger-gradle插件解析任务以获取Spring MVC API注释的任何文档。我可以让它在另一个使用jax-rs注释的应用程序上正常工作,因此我确信这是一个解决任务配置问题的方法。

一份我的毕业证书。生成文件:

buildscript {
    ext {
        springBootVersion = '1.4.1.RELEASE'
    }
    repositories {
        mavenCentral()
        maven {
          url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath("io.spring.gradle:dependency-management-plugin:0.5.6.RELEASE")

        // SwaggerHub Plugin Dependency
        classpath("gradle.plugin.io.swagger:swaggerhub:1.0.1")

        // Swagger Gradle Plugin Dependency
        classpath("io.swagger.core.v3:swagger-gradle-plugin:2.0.5") 

    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'jacoco'
// Required to upload swagger api doc to swaggerhub
apply plugin: 'io.swagger.swaggerhub'
// Required to generate swagger api doc file to upload to swaggerhub
apply plugin: 'io.swagger.core.v3.swagger-gradle-plugin'


jar {
    baseName = 'service-framework'
    version = '0.0.1-SNAPSHOT'
}

javadoc {
    source = sourceSets.main.allJava
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-aop')
    compile('org.springframework.boot:spring-boot-starter-jersey')
    compile('org.springframework.boot:spring-boot-starter-web')

    // Swagger Dependencies to generate the api documentation
    compile('io.swagger:swagger-annotations:1.5.20')
    compile('io.springfox:springfox-swagger2:2.8.0')
    compile('io.springfox:springfox-swagger-ui:2.8.0')

    runtime('com.h2database:h2')
    runtime('org.postgresql:postgresql')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    testCompile group: 'org.hamcrest', name: 'hamcrest-core', version: '1.3'
    testCompile group: 'junit', name: 'junit-dep', version: '4.10'
    testCompile group: 'org.hamcrest', name: 'hamcrest-library', version: '1.3'
}

// Command to the swagger gradle plugin to generate the api file for upload
// to swaggerhub
//
//
// Create the directory for output of the api document
File path = new File("${buildDir}/doc")
//
// The Swagger Core Task to create the json output file required to upload
// to SwaggerHub
//
resolve {
    outputFileName = 'openAPI'
    outputFormat = 'JSON'
    prettyPrint = 'TRUE'
    classpath = sourceSets.main.runtimeClasspath
    resourcePackages = ['test.serviceframework']
    outputPath = path.getAbsolutePath();
}

openAPI中的结果输出。json文件:

{
  "openapi" : "3.0.1"
}

共有2个答案

楚方伟
2023-03-14

我知道这是一个老问题,但自从最初的帖子,Swagger gradle插件没有解决这个问题。然而,Spring Doc有。

https://github.com/springdoc/springdoc-openapi-gradle-plugin

李锦
2023-03-14

目前似乎还没有一个针对Spring(MVC/Rest)和OpenAPI3的自动文档工具。

SpringFox为Swagger 2做到了这一点。看起来你加了这个,所以你应该在 /v2/api-docs看到你的斯瓦格2医生

io.swagger.core为JAX-RS和泽西做OpenAPI 3

目前的选择是:

  • 生成Swagger 2,并将其转换为OpenAPI 3
  • 在Spring内部运行JAX-RS
 类似资料:
  • 我测试了简单的scala程序并用calac编译了它 如果我运行java-cp。;scala图书馆。“jar测试”,它工作正常。是的,scala图书馆。jar文件在同一个目录中。 这是我的清单文件manifest.txt 我用罐子cfm Test.jarmanifest.txt 如果我解压生成的测试。jar文件和打开清单文件,它不包含主类字段。因此,它不能与java-jar测试一起运行。罐子 我可以

  • 我目前正在使用openapi生成器maven插件生成一个模型,但当该模型创建BigDecimal属性时,它没有添加正确的导入。例如: 当我手动添加导入时,模型编译成功,但我认为它会生成。 我尝试在配置部分添加导入映射,如下所示: 正如这里所建议的那样。 还尝试了以下方法: 但行为是一样的。 我正在使用openapi生成器版本5.0.0。我目前的配置是这样的:

  • 我正在为Java企业应用程序类开发一个项目。我有一个带有ejb模块的应用程序,它有一个类库中的“facade”类,该类库连接到一个简单的类似Twitter的数据库。所有的逻辑都运行良好,但是,当我为facade添加远程bean并尝试运行它时,应用程序崩溃,最后包含堆栈跟踪。 通过查看GlassFish输出屏幕,我发现了以下警告: 警告: ACDEPL112:以下扩展或库引用自C:\用户[proje

  • 在构建过程中,我如何上传文件到Jenkins Artifactory Plugin的艺术作品?上传后,该作业将触发另一个作业,该作业将从Artifactory下载工件。对我来说,在Jenkins作业中归档工件不是一个选项,因为我们应该在Artifactory中保留工件。 我可以使用curl上传到Artifactory,但我需要丢弃旧版本(由Jenkins Artifactory插件提供)。我可以在

  • 我目前使用的是带有hibernate3-maven-plugin的Hibernate 3.6.9。我使用目标hbm2ddl来生成一个sql模式文件。 该插件不支持Hibernate 4.1.2。如何生成架构文件?

  • mongodb.java: 我认为Maven没有构建正确,但我不知道。(我运行了包Maven构建)