Spec-Zone.ru › Kotlin 1.7

Kotlin и OSGi

Чтобы включить поддержку Kotlin 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:

compile "org.jetbrains.kotlin:kotlin-osgi-bundle:$kotlinVersion"

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

dependencies {
 compile (
   [group: 'some.group.id', name: 'some.library', version: 'someversion'],
   .....) {
  exclude group: 'org.jetbrains.kotlin'
}

Вопросы и ответы

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

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

Последнее изменение: 11 февраля 2021
Документирование кода Kotlin: KDoc и Dokka Обзор учебных материалов

© 2010–2022 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