Проблема: сгенерированные источники не принимаются 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, извините, если это дубликат, я не нашел решения.