首页 > 解决方案 > 在一个 gradle 文件中设置所有依赖项?

问题描述

我有的

我的 android 项目中有两个不同的模块:

在核心build.gradle文件中,我拥有所有这些依赖项:

    //Moshi
    implementation "com.squareup.moshi:moshi-kotlin:$moshi_version"
    //Retrofit
    implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
    implementation "com.squareup.retrofit2:converter-moshi:$moshi_converter_version"
    //okhttp
    implementation "com.squareup.okhttp3:okhttp:$okhttp3_version"
    implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_loggin_interceptor"
    //Koin
    implementation "io.insert-koin:koin-android:$koin_version"
    implementation "io.insert-koin:koin-androidx-viewmodel:$koin_viewmodel_version"

我不想在应用程序build.gradle文件中声明所有这些依赖项。

我正在阅读一些博客和Gradle 官方文档,但我无法成功实现这一点。

我想要的是

我想从核心模块 gradle 文件中“继承”所有依赖项

项目的结构应该是这样的:

core
|_build.gradle (common dependencies)
|_app
  |_build.gradle (just specific dependencies)

我试过的

我已经读到可以按如下方式实现核心项目(在应用程序 build.gradle 文件中):

dependencies {
  implementation project (":core")
  ......
}

但是我在应用程序模块中有一些使用无法找到的核心类的类。例如:

import com.example.core.presentation.base.BaseViewModel

该错误表示无法解析引用,就像它不存在一样。

一些想法?

提前致谢!!

标签: androidgradlebuild.gradle

解决方案


实现这一点的最简单方法是使用约定插件。不要让插件部分吓到你太多,这是一些设置但并不复杂。

那里有 3 个选项:

  1. 将插件放在 buildSrc 目录中并让 gradle 自动拾取它
  2. 将插件放在特定模块中并包含构建(复合构建)
  3. 将插件放在特定模块中,将其释放并作为二进制依赖插件加载。

更多信息可以在这里找到: https ://docs.gradle.org/current/samples/sample_convention_plugins.html

或者,如果您只想将版本维护在一个地方,但不介意将依赖项放在两个构建 gradle 文件中,那么平台可能会更容易:https ://docs.gradle.org/current/userguide/java_platform_plugin.html


推荐阅读