Мультиплатформенный проект с общим модулем

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

В качестве фона я хочу создать библиотеку, которая генерирует какую-то конфигурацию и использует эту конфигурацию для библиотеки времени выполнения, которая должна работать на jvm и node.js. Таким образом, классы данных конфигурации могут быть общими, которые я хочу поместить в общий модуль. Этот код вообще не зависит от платформы. Генерация конфигурации (я называю это CLI) должна быть только jvm. Итак, у меня есть эти модули (с названиями плагинов):

  • cli (org.jetbrains.kotlin.jvm)
  • общий (котлин-платформа-общий)
  • общая среда выполнения (kotlin-platform-common)
  • runtime-js (котлин-платформа-js)
  • время выполнения-jvm (котлин-платформа-jvm)

Я настраиваю общий модуль как зависимость через compile project(":shared"), но кажется, что ни один из общих классов не находится в пути к классам модулей, начиная со среды выполнения.

Это пока невозможно или я что-то сделал не так?

2
0
554
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы подключить модуль общий (т.е. модуль, построенный с использованием kotlin-platform-common) с его реализациями, зависящими от платформы, вы должны предоставить им зависимость expectedBy project(':shared') вместо зависимости от compile.

Вы можете найти пример сценария сборки в Ссылка на Котлин или в некоторых из доступных примеров проектов, таких как здесь.

Круто, что работает, но это не очень интуитивно. Я до сих пор не понимаю, почему реализация для конкретной платформы должна быть ожидается от другим модулем, который предоставляет классы для реализации.

rekire 14.09.2018 21:40

Именование здесь следует терминологии expect / actual мультиплатформенных проектов Kotlin, где общий модуль содержит объявления, которые являются ожидал для получения реализаций для конкретной платформы в модулях платформы. Следовательно, это общий модуль ожидается от.

hotkey 15.09.2018 09:33

Другие вопросы по теме