如何在Android模块之间共享使用annotationProcessor的依赖项



我有一个Android应用程序模块(A(和一个Android库模块(B(。(A(和(B(都包含这些相同的依赖项:

dependencies {
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}

然而,在我的项目中,模块(A(取决于模块(B(所以我在堆栈溢出上搜索了如何实现Don't Repeat Yourself设计模式,以便只在模块(B(中包含这些依赖项,我发现这很有用,但我没有找到如何使这个依赖项

annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1

在这两个模块之间共享那么我该怎么做呢?

如果是单独的存储库

注释处理器是构建时依赖项,但不是运行时依赖项。您不应该强制库的所有用户(以及他们库的用户(使用特定的anntation处理器。与库不同,仅仅因为你在使用它,并不意味着你的库的用户也必须使用它。

在一些罕见的情况下,创建一个Gradle插件来简化用户的构建配置可能是明智的。这样的插件可以自动将注释处理器和库添加到项目中。无论如何,必须声明两个依赖项——即使它们只有效地一起使用——可能也不能证明创建这样的插件是合理的。

如果一个存储库中有多个项目

您可能会决定对整个repository使用特定的注释处理器。在这种情况下,您可以从根目录中的build.gradle为该repository中的所有Gradle项目启用注释处理器。

allprojects {
pluginManager.withPlugin('java') {
dependencies {
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
}
}

相关内容

  • 没有找到相关文章