plugins { kotlin("jvm") version "2.0.21" id("org.openapi.generator") version "7.10.0" id("maven-publish") } group = "ru.vyatsu" version = "1.0.0" val generatedSourcesDir = "$buildDir/generated/openapi" repositories { mavenCentral() } // TODO: Нужно присобачить bom dependencies { compileOnly("com.squareup.okhttp3:okhttp:4.12.0") compileOnly("com.squareup.moshi:moshi-kotlin:1.15.2") compileOnly("org.springframework.boot:spring-boot-autoconfigure:3.4.1") compileOnly("org.springframework.boot:spring-boot-starter-web:3.4.1") compileOnly("org.springframework.boot:spring-boot-starter-validation:3.4.1") compileOnly("jakarta.servlet:jakarta.servlet-api:6.1.0") compileOnly("io.swagger.core.v3:swagger-annotations:2.2.27") compileOnly("io.swagger.core.v3:swagger-models:2.2.27") testImplementation(kotlin("test")) } tasks.test { useJUnitPlatform() } kotlin { jvmToolchain(17) } tasks.openApiGenerate { generatorName.set("kotlin-spring") inputSpec.set("$rootDir/src/main/resources/openapi-contract.yaml") outputDir.set(generatedSourcesDir) packageName.set("ru.vyatsu") configOptions.put("interfaceOnly", "true") configOptions.put("useSpringBoot3", "true") configOptions.put("useBeanValidation", "false") configOptions.put("useSwaggerUI", "false") } sourceSets { getByName("main") { kotlin { srcDir("$generatedSourcesDir/src/main/kotlin") } } } tasks.compileKotlin { dependsOn(tasks.openApiGenerate) } publishing { publications { create("maven") { from(components["kotlin"]) artifactId = tasks.jar.get().archiveBaseName.get() } } }