Почему Gradle не распознает плагин Dokka в buildSrc?

Вопрос или проблема

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

Вот структура директории buildSrc:

buildSrc
├── build.gradle.kts
└── src
    └── main
        └── kotlin
            └── dokka
                ├── configureDocumentation.kt
                ├── Directory.kt
                ├── DocumentationManifest.kt
                ├── SourceSet.kt
                ├── TraditionalSourceRoot.kt
                └── VisibilityDocSet.kt

В этом случае библиотека, которую я намерен использовать, находится по адресу buildSrc/src/main/kotlin/dokka.

В buildSrc/build.gradle.kts я включил плагин Dokka в разделе plugins, ожидая, что это решит проблему:

plugins {
   `kotlin-dsl`
    id("org.jetbrains.kotlin.jvm") version "1.8.0"
    id("org.jetbrains.dokka") version "1.7.20"        <---- ОПРЕДЕЛЕНИЕ ПЛАГИНА
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(kotlin("stdlib"))
}

К сожалению, когда я пытаюсь скомпилировать код в buildSrc/src/main/kotlin/dokka для последующего использования, я получаю множество ошибок неопределенных ссылок, относящихся к org.jetbrains.dokka:

> Task :buildSrc:compileKotlin FAILED
e: .../buildSrc/src/main/kotlin/dokka/VisibilityDocSet.kt:3:55 Неопределённая ссылка: dokka
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:7:5 Неопределённая ссылка: tasks
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:7:34 Неопределённая ссылка: gradle
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:8:9 Неопределённая ссылка: dokkaSourceSets
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:10:17 Неопределённая ссылка: named
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:11:21 Неопределённая ссылка: sourceRoots
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:11:38 Неопределённая ссылка: file
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:12:21 Неопределённая ссылка: reportUndocumented
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:13:21 Неопределённая ссылка: skipEmptyPackages
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:14:21 Неопределённая ссылка: documentedVisibilities
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:17:17 Неопределённая ссылка: configureEach
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:18:21 Неопределённая ссылка: sourceRoots
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:18:38 Неопределённая ссылка: file
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:19:21 Неопределённая ссылка: reportUndocumented
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:20:21 Неопределённая ссылка: skipEmptyPackages
e: .../buildSrc/src/main/kotlin/dokka/configureDocumentation.kt:21:21 Неопределённая ссылка: documentedVisibilities

FAILURE: Сборка завершилась с ошибкой.

* Что пошло не так:
Произошла ошибка выполнения задачи ':buildSrc:compileKotlin'.
> Произошла ошибка при выполнении org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
   > Ошибка компиляции. Смотрите журнал для подробностей

* Попробуйте:
> Запустите с опцией --stacktrace, чтобы получить трассировку стека.
> Запустите с опцией --info или --debug, чтобы получить больше информации из журнала.
> Запустите с опцией --scan, чтобы получить полные сведения.
> Получите дополнительную помощь по адресу https://help.gradle.org.

СБОРКА НЕУДАЧНА в 6s
3 выполненные задачи: 3 выполнены

Я новичок в использовании Gradle (особенно когда речь идет о многомодульных проектах и buildSrc). Возможно, я не понимаю, как работает buildSrc, или что-то упускаю при его правильной настройке.

Спасибо за вашу помощь заранее.

Ответ или решение

Ваша проблема, связанная с тем, что Gradle не распознает плагин Dokka в buildSrc, может быть вызвана несколькими факторами. Давайте рассмотрим шаги, которые помогут вам исправить ситуацию.

1. Понимание buildSrc

buildSrc – это специальная директория в проекте Gradle, которая позволяет вам создавать свои собственные плагины и классы для использования в других модулях вашего проекта. При этом следует помнить, что код в buildSrc компилируется до того, как Gradle начинает обрабатывать ваши основные build-скрипты.

2. Установка зависимостей и плагинов

Проблема с тем, что ваши классы не могут найти org.jetbrains.dokka, вероятно, связана с тем, что зависимости и плагины, определенные в buildSrc/build.gradle.kts, недоступны в контексте компиляции исходного кода внутри buildSrc.

3. Правильная конфигурация

Прежде всего, вам нужно убедиться, что плагин Dokka и другие необходимые зависимости доступны в классе buildSrc. Для этого добавьте необходимые зависимости в buildSrc/build.gradle.kts.

Вот как должен выглядеть ваш файл build.gradle.kts в buildSrc:

plugins {
    `kotlin-dsl`
    kotlin("jvm") version "1.8.0"
}

repositories {
    mavenCentral()
}

dependencies {
    implementation(kotlin("stdlib"))
    // Добавляйте необходимые зависимости для Dokka
    implementation("org.jetbrains.dokka:dokka-core:1.7.20")
}

4. Импорт необходимых классов

В вашем исходном коде в buildSrc/src/main/kotlin/dokka убедитесь, что вы импортируете необходимые классы из Dokka. Например:

import org.jetbrains.dokka.gradle.DokkaTask
import org.jetbrains.dokka.gradle.dokkaSourceSets
// и другие нужные импорты

5. Конфигурация плагина Dokka в основном проекте

Также убедитесь, что в вашем основном проекте (в build.gradle.kts или аналогичном файле конфигурации) вы правильно применяете плагин Dokka и настраиваете его для работы с вашими модулями:

plugins {
    id("org.jetbrains.dokka") version "1.7.20"
}

dokka {
    outputFormat = "html"
    outputDirectory = "$buildDir/dokka"
}

Заключение

После внесения вышеуказанных изменений попробуйте снова выполнить сборку вашего проекта. Убедитесь, что Gradle успешно собирает код в buildSrc, и ваша конфигурация Dokka работает без ошибок. Если проблема все еще сохраняется, проверьте, нет ли опечаток в именах классов или путях к файлам и зависимостям.

Если у вас будут дополнительные вопросы или возникнут сложности, не стесняйтесь обращаться за помощью. Удачи в ваших начинаниях с Gradle и Dokka!

Оцените материал
Добавить комментарий

Капча загружается...