buildscript { repositories { mavenLocal() mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" } } plugins { id "org.jetbrains.kotlin.multiplatform" id "org.jetbrains.kotlin.plugin.serialization" id "org.jetbrains.dokka" } repositories { mavenLocal() mavenCentral() } kotlin { jvm { compilations.main { kotlinOptions { jvmTarget = "1.8" } } } js(IR) { browser() nodejs() } sourceSets { commonMain { dependencies { implementation kotlin('stdlib') api project(":tgbotapi.core") api project(":tgbotapi.api") api project(":tgbotapi.utils") api project(":tgbotapi.behaviour_builder") api project(":tgbotapi.behaviour_builder.fsm") api project(":tgbotapi") } } jsMain { dependencies { api project(":tgbotapi.webapps") } } } } private List findSourcesWithName(String... approximateNames) { return parent.subprojects .findAll { it != project } .collectMany { it.kotlin.sourceSets } .findAll { sourceSet -> approximateNames.any { nameToFilter -> sourceSet.name.contains(nameToFilter) } }.collect { it.kotlin } } Object callback = { switch (true) { case project.hasProperty("DOKKA_PATH"): outputDirectory = project.property("DOKKA_PATH").toString() break case System.getenv("DOKKA_PATH") != null: outputDirectory = System.getenv("DOKKA_PATH") break } dokkaSourceSets { configureEach { skipDeprecated.set(true) sourceLink { localDirectory.set(file("./")) remoteUrl.set(new URL("https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/")) remoteLineSuffix.set("#L") } } named("commonMain") { sourceRoots.setFrom(findSourcesWithName("commonMain")) } named("jsMain") { sourceRoots.setFrom(findSourcesWithName("jsMain")) } named("jvmMain") { sourceRoots.setFrom(findSourcesWithName("jvmMain")) } } } tasks.dokkaGfm(callback) tasks.dokkaHtml(callback) java { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 }