plugins { alias(libs.plugins.kotlin.multiplatform) alias(libs.plugins.kotlin.serialization) } kotlin { jvmToolchain(21) // "Все возможные цели сборки": jvm + весь натив. Зеркалит набор :proto. // Никаких блокеров нет: ktor-server-{core,sse,cio,content-negotiation} имеет // опубликованные linuxX64/macosX64/macosArm64/iosX64/iosArm64/iosSimulatorArm64/ // linuxArm64/mingwX64 варианты; :proto уже собирается под все эти таргеты. jvm() macosX64() macosArm64() iosX64() iosArm64() iosSimulatorArm64() linuxX64() linuxArm64() mingwX64() sourceSets { commonMain.dependencies { implementation(project(":proto")) // Read-only storage handles, которые HTTP-фасад выставляет наружу // под {path}/journal/* и {path}/outbox/*. Типы JournalStore/ // OutboxStore фигурируют в сигнатурах internal-функций // journalRoutes/outboxRoutes, поэтому нужны в compile classpath. // Транзитивные api-висимости :proto (:journal-api, :outbox-api) // не доходят до :server из-за implementation(:proto), поэтому // объявляем напрямую. implementation(project(":journal-api")) implementation(project(":outbox-api")) // Ktor (без engine — engine подключает потребитель, см. :standalone). implementation(libs.ktor.server.core) implementation(libs.ktor.server.content.negotiation) implementation(libs.ktor.serialization.kotlinx.json) // Commons implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.serialization.core) implementation(libs.kotlinx.serialization.json) } commonTest.dependencies { implementation(libs.kotlinx.coroutines.core) implementation(kotlin("test")) implementation(libs.ktor.server.test.host) implementation(libs.ktor.server.cio) implementation(libs.ktor.client.content.negotiation) implementation(libs.ktor.serialization.kotlinx.json) implementation(project(":journal-inmemory")) } } }