У меня есть проект библиотеки, который предоставляет общую функциональность для других проектов. Реализация написана на Kotlin. Однако я убедился, что открытый интерфейс библиотеки не использует классы, предоставленные Kotlin.
Если мы добавим эту библиотеку в качестве зависимости к проекту только для Java, она транзитивно вытягивает kotlin-stdlib
и kotlin-runtime
. Классы из Kotlin-stdlib теперь могут (но по ошибке) использоваться в потребительском проекте только для Java.
Есть ли способ предотвратить утечку этого типа? Некоторые варианты, которые я могу придумать:
Пометить kotlin-stdlib-*
как provided
в Maven: Это вызовет какие-либо проблемы во время выполнения? (ClassNotFoundException
и тому подобное)
Затенение + перемещение kotlin-stdlib-*
и / или kotlin-runtime
: С затенением я предвижу проблемы, если мы будем зависеть от нескольких проектов библиотеки Kotlin. Кроме того, я не уверен, действительно ли это скроет типы Kotlin.
Примечание: вопрос Использование библиотеки kotlin в java-коде здесь неприменимо (вводит в заблуждение заголовок). Я специально избегаю этого сценария.