Использование библиотек Kotlin в качестве зависимостей в проекте Java - PullRequest
0 голосов
/ 29 августа 2018

У меня есть проект библиотеки, который предоставляет общую функциональность для других проектов. Реализация написана на Kotlin. Однако я убедился, что открытый интерфейс библиотеки не использует классы, предоставленные Kotlin.

Если мы добавим эту библиотеку в качестве зависимости к проекту только для Java, она транзитивно вытягивает kotlin-stdlib и kotlin-runtime. Классы из Kotlin-stdlib теперь могут (но по ошибке) использоваться в потребительском проекте только для Java.

Есть ли способ предотвратить утечку этого типа? Некоторые варианты, которые я могу придумать:

  • Пометить kotlin-stdlib-* как provided в Maven: Это вызовет какие-либо проблемы во время выполнения? (ClassNotFoundException и тому подобное)

  • Затенение + перемещение kotlin-stdlib-* и / или kotlin-runtime: С затенением я предвижу проблемы, если мы будем зависеть от нескольких проектов библиотеки Kotlin. Кроме того, я не уверен, действительно ли это скроет типы Kotlin.

Примечание: вопрос Использование библиотеки kotlin в java-коде здесь неприменимо (вводит в заблуждение заголовок). Я специально избегаю этого сценария.

1 Ответ

0 голосов
/ 08 ноября 2018

Не достаточно ли объявления ваших библиотечных зависимостей с помощью ключевого слова implementation, чтобы не показывать их транзитивно? как указано здесь We use the implementation dependency configuration so that we don’t expose any of the Kotlin standard library through our API. This has architectural and performance benefits.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...