Spec-Zone.ru › Kotlin 2

Kotlin и OSGi

Чтобы включить поддержку OSGi в проекте Kotlin, подключите kotlin-osgi-bundle вместо стандартных библиотек Kotlin. Рекомендуется удалить зависимости kotlin-runtime, kotlin-stdlib и kotlin-reflect, так как kotlin-osgi-bundle уже содержит их все. Также следует обратить внимание на случаи, когда подключаются внешние библиотеки Kotlin. Большинство стандартных зависимостей Kotlin не готовы к работе с OSGi, поэтому не следует их использовать и нужно удалить из проекта.

Maven

Чтобы подключить пакет Kotlin OSGi к проекту Maven:

<dependencies>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-osgi-bundle</artifactId>
        <version>${kotlin.version}</version>
    </dependency>
</dependencies>

Чтобы исключить стандартную библиотеку из внешних библиотек (обратите внимание: «исключение со звёздочкой» работает только в Maven 3):

<dependency>
    <groupId>some.group.id</groupId>
    <artifactId>some.library</artifactId>
    <version>some.library.version</version>

    <exclusions>
        <exclusion>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Gradle

Чтобы подключить kotlin-osgi-bundle к проекту Gradle:

dependencies {
    implementation(kotlin("osgi-bundle"))
}
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-osgi-bundle:2.4.20"
}

Чтобы исключить стандартные библиотеки Kotlin, подключаемые как транзитивные зависимости, можно использовать следующий подход:

dependencies {
    implementation("some.group.id:some.library:someversion") {
        exclude(group = "org.jetbrains.kotlin")
    }
}
dependencies {
    implementation('some.group.id:some.library:someversion') {
        exclude group: 'org.jetbrains.kotlin'
    }
}

Часто задаваемые вопросы

Почему бы просто не добавить необходимые параметры манифеста во все библиотеки Kotlin?

Хотя это наиболее предпочтительный способ обеспечить поддержку OSGi, к сожалению, пока это невозможно из-за так называемой проблемы «разделения пакетов», которую нельзя легко устранить; столь масштабные изменения пока не планируются. Существует возможность Require-Bundle, но это тоже не лучший вариант, и его не рекомендуется использовать. Поэтому было решено создать отдельный артефакт для OSGi.

12 августа 2026 г.
Документирование кода Kotlin: KDocKotlin и непрерывная интеграция с TeamCity

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/kotlin-osgi.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API