Проект Spring-boot, использующий Gradle, закодированный в Kotlin, автоматически создает классы OpenAPI kotlin - PullRequest
0 голосов
/ 17 июня 2020

Проблема: сгенерированные источники не принимаются gradle как часть источников, поэтому импорт сгенерированных интерфейсов не выполняется.

Вопрос: как добавить сгенерированные источники, чтобы gradle (с goovy dsl и kotlin plugin) подбирает их?

setup: spring-boot -> kotlin gradle языка программирования -> groovy

Я могу сгенерировать классы kotlin с помощью OpenAPI Плагин Generator Gradle без проблем.

Я использую опцию «interfaceOnly», поэтому он создает только интерфейсы. Это означает, что мне действительно нужно их реализовать.

Я использую типичную настройку проекта Gradle. Теперь я не знаю, где разместить сгенерированные файлы, чтобы gradle (и intellj) их забирали.

openAPI.yaml:

openapi: 3.0.1
info:
  version: 0.1.0
  title: Villagechatter Calendar
  description: Villagechatter calendar microservice

tags:
  - name: external
    description: external API
  - name: internal
    description: Internal API for other microservices

paths:
  /hello:
    get:
      responses:
        200:
          description: Ok
          content:
            text/plain:
              schema:
                type: string
                description: demo
                example: Hello World!

build.gradle:

    id("org.springframework.boot") version "2.3.1.RELEASE"
    id("io.spring.dependency-management") version "1.0.9.RELEASE"
    id "org.jetbrains.kotlin.jvm" version "1.3.72"
    id "org.openapi.generator" version "4.3.1"
}
apply plugin: 'kotlin'

group = "com.example"
version = "0.0.1-SNAPSHOT"

repositories {
    mavenCentral()
}

compileKotlin {
    kotlinOptions {
        freeCompilerArgs = ["-Xjsr305=strict"]
        jvmTarget = "1.8"
    }
}


openApiGenerate {
    inputSpec = "$rootDir/specs/openApi.yaml"
    generatorName = "kotlin-spring"
    //setting package names and interface only with a configFile, should not matter for the problem
    outputDir = "$buildDir/generated-src"
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-oauth2-client")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    testImplementation("org.springframework.boot:spring-boot-starter-test") {
        exclude group : "org.junit.vintage"
        exclude module : "junit-vintage-engine"
    }
}

то, что я пробовал:

sourceSets {
    main {
        kotlin.srcDirs += "PATH-TO-GENERATED-FILES"
    }
}

Также попытался создать новый sourceSet и добавить его в компиляцию Kotlin task

Результаты Google, которые я обнаружил, были связаны с gradle и kotlin dsl, извините, если это дубликат, я не нашел решения.

...