Потребителю библиотечного модуля Android необходимо добавить зависимости пути к классам

У меня есть приложение для Android (модуль app) и модуль библиотеки Android (модуль lib), каждый из которых является отдельным проектом Android Studio, но проект приложения добавил lib в качестве зависимости модуля в своем проекте.

lib использует Dokka от JetBrain для создания HTML-документации, и ему нужен плагин Dokka для Android Gradle, который определяется в верхнем уровне build.gradle своего собственного проекта:

buildscript {
    dependencies {
        // ...
        classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.18"
    }
}

И в build.gradle модуля lib мне пришлось добавить следующее

apply plugin: 'org.jetbrains.dokka-android'

android {
    // ...
    dokka { /* my Dokka config */ }
}

Так что прямо сейчас проект lib работает и строится нормально, и я могу генерировать HTML-файлы документации с помощью Dokka.

Однако синхронизация Gradle моего проекта приложения теперь завершается сбоем, поскольку в нем говорится: «Плагин с идентификатором org.jetbrains.dokka-android не найден». Если я добавлю classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.18" к верхнему уровню build.gradle моего проекта приложения, тогда он будет работать нормально.

Мой вопрос: как сообщить основному проекту (приложению), что зависимость classpath для Dokka уже объявлена ​​в модуле lib верхнего уровня build.gradle? Или есть способ указать эту зависимость для только модуля lib? Я также думаю, что это странно, если у меня есть несколько приложений, использующих мой модуль lib, и им нужно будет добавить эту зависимость пути к классам, чтобы иметь возможность создавать свои приложения.

Большое спасибо.


person Chee-Yi    schedule 22.08.2019    source источник
comment
Как вы импортируете библиотеку? Вы не должны создавать документ (а затем требование mokka), если вы работаете над приложением, а не над библиотекой.   -  person Gabriele Mariotti    schedule 22.08.2019
comment
@GabrieleMariotti Мой модуль lib импортируется путем указания пути к нему в settings.gradle, затем я включаю его как зависимость в свой уровень app build.gradle. Дело в том, что часть apply plugin: 'org.jetbrains.dokka-android' в build.gradle lib жалуется, что не может найти плагин.   -  person Chee-Yi    schedule 22.08.2019


Ответы (1)


Вы можете просто добавить эту часть в свое lib/build.gradle удаление из файла верхнего уровня.

buildscript {
    //
    dependencies {
        classpath 'org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.18'
    }
}

Это происходит потому, что вы импортируете эту библиотеку как внешний модуль и запускаете некоторые задачи (например, задачу build) в модуле lib.
Этого можно избежать:

  • импортируйте свою библиотеку как зависимость aar или maven (лучший вариант - опубликовать в частном репозитории maven)
  • просто запускайте задачи, связанные с приложением.
person Gabriele Mariotti    schedule 22.08.2019
comment
Спасибо, это было! Я не знал, что у нас может быть buildscript блоков в build.gradle файлах уровня модуля. - person Chee-Yi; 23.08.2019