import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.openapitools.generator.gradle.plugin.tasks.GenerateTask plugins { id("org.springframework.boot") version "3.1.4" id("io.spring.dependency-management") version "1.1.3" kotlin("jvm") version "1.8.22" kotlin("plugin.spring") version "1.8.22" id("org.openapi.generator") version "7.0.1" } group = "dev.usbharu" version = "0.0.1-SNAPSHOT" java { sourceCompatibility = JavaVersion.VERSION_17 } repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") testImplementation("org.springframework.boot:spring-boot-starter-test") implementation("jakarta.validation:jakarta.validation-api") implementation("jakarta.annotation:jakarta.annotation-api:2.1.0") compileOnly("io.swagger.core.v3:swagger-annotations:2.2.6") implementation("io.swagger.core.v3:swagger-models:2.2.6") } tasks.withType { kotlinOptions { freeCompilerArgs += "-Xjsr305=strict" jvmTarget = "17" } } tasks.withType { useJUnitPlatform() } tasks.create("openApiGenerateMastodonCompatibleApi", GenerateTask::class) { generatorName.set("kotlin-spring") inputSpec.set("$rootDir/src/main/resources/openapi/mastodon.yaml") outputDir.set("$buildDir/generated/sources/mastodon") apiPackage.set("dev.usbharu.hideout.controller.mastodon.generated") modelPackage.set("dev.usbharu.hideout.domain.mastodon.model.generated") configOptions.put("interfaceOnly", "true") configOptions.put("useSpringBoot3", "true") additionalProperties.put("useTags", "true") importMappings.put("org.springframework.core.io.Resource", "org.springframework.web.multipart.MultipartFile") typeMappings.put("org.springframework.core.io.Resource", "org.springframework.web.multipart.MultipartFile") templateDir.set("$rootDir/templates") globalProperties.put("debugModels","true") globalProperties.put("debugOpenAPI","true") globalProperties.put("debugOperations","true") } sourceSets.main { kotlin.srcDirs( "$buildDir/generated/ksp/main", "$buildDir/generated/sources/openapi/src/main/kotlin", "$buildDir/generated/sources/mastodon/src/main/kotlin" ) }