Плагин Kotlin для стрелочной оптики ksp внутри проекта KMPAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Плагин Kotlin для стрелочной оптики ksp внутри проекта KMP

Сообщение Anonymous »

Я пытаюсь запустить плагин ksp для оптики стрел в проекте KMP.
Я начал с включения плагина ksp в файл сборки Android:

Код: Выделить всё

plugins {
// ...
alias(libs.plugins.ksp)
}

// ...

kotlin {
// ...

sourceSets {

androidMain.dependencies {
// ...
}

commonMain.dependencies {
implementation(libs.bundles.arrow)
}
}
}

dependencies {
// ...
add("kspAndroid", libs.arrow.optics.ksp)
}
Где стрелка-оптика-ksp определена в каталоге версий следующим образом:

Код: Выделить всё

[versions]
arrow = "2.1.2"

[libraries]
arrow-optics = { module = "io.arrow-kt:arrow-optics", version.ref = "arrow" }
arrow-optics-ksp = { module = "io.arrow-kt:arrow-optics-ksp-plugin", version.ref = "arrow" }

[bundles]
arrow = [
# ...
"arrow-optics",
]
При этом генерируется код, и среда разработки его распознает.
Мой пример:

Код: Выделить всё

fun test() {
val foo = Foo("bar")
Foo.bar.set(foo, "baz")
}

@optics
data class Foo(val bar: String) {
companion object;
}
Однако, когда я на самом деле пытаюсь его построить, я получаю исключение: Неразрешенная ссылка «bar».
Поэтому мне кажется, что gradle не может найти сгенерированный код для процесса сборки.
Также обратите внимание, что я использую другой плагин ksp (тот, который для базы данных комнат), который работает отлично.
Кстати, я также хотел бы добавить kps оптики в общий код и остальную часть моего проекта.
(Я пробовал, но тоже не получилось).
Информация о проекте.
  • место генерации кода:
    Сгенерированный код из моего примера выше попадает в composeApp/build/generated/ksp/android/androidDebug/kotlin/essens/planer/app/Foo__Optics.kt
    в то время как сгенерированный код из плагина room ksp находится в проекте composeApp/build/generated/ksp/android/androidDebug/kotlin/essens/planer/data/
  • project структура:
  • shared

    commonMain
  • commonTest
[*]composeApp
  • androidMain
  • androidUnitTest
  • commonMain
[*]сервер (java)
  • основной
  • тест
  • версии
    Версия Gradle: 8.11.1
    Версия Kotlin: 2.2.0
    Версия KSP: 2.2.0-2.0.2
    Версия со стрелкой: 2.1.2
ссылки, которые я посетил в поисках решения: Буду очень признателен за любую помощь.

Подробнее здесь: https://stackoverflow.com/questions/797 ... mp-project
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»