сегодня я попытался немного глубже погрузиться в Gradle и зависимости (Kotlin).
Однако теперь я немного запутался в зависимостях. Я хотел включить клиент Ktor в проект для практических целей. Поэтому я искал ktor в Google > mavenrepository. https://mvnrepository.com/search?q=ktor&p=1
Судя по результатам, кажется очевидным, что мне нужно включить ktor-client-core в свой build.gradle.kts. Но теперь у меня возникает вопрос. Какое из ktor-client-core мне нужно включить, существует множество его версий. ktor-client-core, ktor-client-core-js, ktor-client-core-jvm, ktor-client-core-ioarm64, ... Кажется, существует общая версия: ktor-client-core и версии для конкретной платформы: ktor-client-core-jvm.





В конечном счете, вам нужна только зависимость, специфичная для платформы, на которую вы ориентируетесь на данный момент времени.
Однако использование общей библиотеки, такой как ktor-client-core, очень полезно, если вы пишете мультиплатформенное приложение на Kotlin. Это содержит:
Итак, моя мультиплатформенная установка Gradle на Kotlin может выглядеть примерно так:
plugins {
kotlin("multiplatform")
}
kotlin {
js()
jvm()
sourceSets {
commonMain {
dependencies {
implementation("io.ktor:ktor-client-core:2.3.11")
}
}
}
}
а затем Gradle добавит версию JS в сборку JS и версию JVM в сборку JVM.
Вы также можете добавить общую зависимость в конфигурацию зависимостей, специфичную для платформы, и Gradle сможет найти правильную зависимость.
Итак, чтобы осветить конкретные вопросы:
- всегда ли нужно включать ktor-client-core?
Нет, но его проще использовать, если вы используете мультиплатформенность Gradle и Kotlin. Если вы создаете проект без Gradle, почти наверняка проще использовать зависимости платформы.
- когда должна быть явно включена версия для конкретной платформы (в Intellij под Linux все было сделано ktor-client-core)?
Когда вы создаете приложение без инструмента, который может использовать метаданные Gradle для доступа к необходимой зависимости платформы.
- заменяет ли версия для конкретной платформы ktor-client-core?
Да, для данной платформы.
- почему существует версия для iOS, Linux, Windows, если есть версия JVM, которая должна быть установлена по умолчанию в настольных системах для запуска Java?
Kotlin через Kotlin Native может работать с этими платформами без JVM. Или вы можете запустить свою программу на JVM на этих платформах. Выбор ваш.
Огромное спасибо, прекрасное и понятное объяснение :-D