Android 库模块的使用者必须添加类路径依赖项

Consumer of Android library module having to add classpath dependencies

我有一个 Android 应用程序(app 模块)和一个 Android 库模块(lib 模块),每个都是一个单独的 Android Studio项目,但应用程序项目在其项目中添加了 lib 作为模块依赖项。

lib使用JetBrain的Dokka生成HTML文档,需要DokkaAndroidGradle插件,定义在自己项目的顶层build.gradle:

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

并且在 lib 模块的 build.gradle 中我必须添加以下内容

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

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

所以现在 lib 项目运行良好并且构建良好,我能够使用 Dokka 生成文档 HTMLs。

但是,我的应用程序项目的 Gradle 同步现在失败了,因为它显示 "Plugin with id org.jetbrains.dokka-android not found"。如果我将 classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.18" 添加到我的应用程序项目的顶级 build.gradle 那么它就可以正常工作。

我的问题是,如何告诉主(应用)项目 Dokka 的类路径依赖项已经在 lib 模块的顶级 build.gradle 中声明?或者有没有办法为 just lib 模块指定这种依赖关系?我还认为如果我有多个应用程序使用我的 lib 模块并且他们需要添加此类路径依赖项才能构建他们的应用程序,这很奇怪。

非常感谢。

您可以将此部分添加到您的 lib/build.gradle 从顶级文件中删除。

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

发生这种情况是因为您正在将此库作为外部模块导入,并且您正在 lib 模块中 运行 执行一些任务(例如 build 任务)。
你可以避免它:

  • 将您的库作为 aar 或 maven 依赖项导入(最好的选择是在私有 maven 存储库中发布)
  • 只有 运行 个与应用相关的任务。