我有一个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'
}
}
}