Плагин Swagger Gradle неправильно генерирует файл openapi.json для Spring MVC во время сборки - PullRequest
0 голосов
/ 18 октября 2018

Я хотел бы импортировать файлы определения API, созданные с помощью плагина swagger gradle.У меня есть приложение весенней загрузки MVC.Кажется, я не могу правильно настроить параметры разрешения для создания openAPI.json.Задача разрешения gradle создает пустой файл только с тегом «openapi»: «3.0.1» и значением.Задача разрешения не заключается в получении аннотаций swagger и mvc api.Можете ли вы указать мне правильное направление, чтобы найти правильные параметры конфигурации для задачи определения червяка?

Приложение отображает документацию Spring-UI без проблем, когда приложение запущено, и я просматриваю конечную точку swagger-ui.Проблема заключается в том, что во время сборки gradle существует отдельная задача gradle для создания файла openAPI.json, который я хотел бы импортировать в SwaggerHub как часть каталога API приложения.

Мне не удалось найти какую-либо документациюгде-нибудь о том, как настроить задачу разрешения подключаемого модуля swagger gradle для получения аннотаций Spring MVC API.Я могу заставить его работать нормально в другом приложении, которое использует аннотации jax-rs, так что я уверен, что это проблема конфигурации задачи решения.

Копия моего файла gradle.build:

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"
}

1 Ответ

0 голосов
/ 05 декабря 2018

Похоже, еще нет инструмента автоматической документации для Spring (MVC / Rest) и OpenAPI 3.

SpringFox делает это для Swagger 2. Похоже, вы 'Мы добавили это, поэтому вы должны увидеть ваш документ Swagger 2 по адресу / v2 / api-docs

io.swagger.core делает OpenAPI 3 для JAX-RS и Jersey

Опции на этом этапеявляются:

  • Генерация Swagger 2, и преобразовать его в OpenAPI 3
  • Запустить JAX-RS внутри Spring
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...