Gradle 8.x版本模块依赖配置

文章讲述了如何在work模块中配置对eat和transportation模块的依赖。在settings.gradle文件中,通过include语句指定这两个模块的位置,然后在build.gradle文件的dependencies块中声明对它们的实现。完成配置后,重新编译工程以确保依赖关系正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例如有模块eat、transportation、console、work四个模块,其中work模块依赖eat、transportation 这两个模块。配置如下:

1.在work 模块中的settings.gradle 文件中配置:

include 'eat'
project (':eat').projectDir=new File(settingsDir,'../eat')

include 'transportation'
project (':transportation').projectDir=new File(settingsDir,'../transportation')

2.在work模块中的build.gradle文件中配置

dependencies {

        //others 
        implementation project(':eat')
        implementation project(':transportation')

}

重新编译工程即可。

### Android `build.gradle.kts` 模块配置 #### 使用 Kotlin DSL 进行模块配置 Kotlin DSL (`build.gradle.kts`) 提供了一种更现代的方式来进行 Gradle 配置。通过使用 Kotlin 而不是 Groovy 编写脚本,可以利用静态类型的优点并获得更好的 IDE 支持。 对于大型项目来说,合理的模块划分能够提高开发效率和维护性。下面是一个典型的多模块 Android 项目的结构及其对应的 `build.gradle.kts` 文件配置[^1]: #### 项目根目录下的 `settings.gradle.kts` 设置哪些子项目应该被纳入到整个构建过程中: ```kotlin include(":app", ":feature:auth", ":core:data", ":core:model") ``` 这表示当前工程包含了四个模块:`app`, `feature/auth`, `core/data`, 和 `core/model`. #### 统一依赖版本管理 为了保持各个模块之间的依赖一致性,在根级创建一个名为 `dependenciesVersions.properties` 的文件来集中定义所有库的版本号: ```properties version.kotlin=1.8.0 version.android_gradle_plugin=7.4.2 ... ``` 接着可以在顶层 `buildSrc/build.gradle.kts` 中读取这些属性值,并将其应用于其他地方: ```kotlin plugins { `kotlin-dsl` } repositories { google() mavenCentral() } ``` 在 `buildSrc/src/main/kotlin/Versions.kt` 定义版本类: ```kotlin object Versions { const val kotlin = findProperty("version.kotlin") as String const val androidGradlePlugin = findProperty("version.android_gradle_plugin") as String ... } ``` 最后,在各模块中的 `build.gradle.kts` 可以这样引用: ```kotlin plugins { id("com.android.application").version(Versions.androidGradlePlugin).apply(false) kotlin("android").version(Versions.kotlin).apply(false) } ``` #### 应用模块(`app/build.gradle.kts`) 这是应用程序的主要入口点,负责组装最终APK/IPA包. ```kotlin plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.kotlinAndroid) } android { namespace = "com.example.myapp" defaultConfig { applicationId = "com.example.myapp" minSdk = 21 targetSdk = 33 versionCode = 1 versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } buildTypes { getByName("release") { isMinifyEnabled = false proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } compileOptions { sourceCompatibility(JavaVersion.VERSION_1_8) targetCompatibility(JavaVersion.VERSION_1_8) } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() } } dependencies { implementation(project(":feature:auth")) implementation(project(":core:data")) implementation(project(":core:model")) // Other dependencies like androidx.core etc. } ``` #### 功能模块(`feature/auth/build.gradle.kts`) 功能模块专注于实现特定业务逻辑部分的功能组件. ```kotlin plugins { alias(libs.plugins.androidLibrary) alias(libs.plugins.kotlinAndroid) } android { namespace = "com.example.feature.auth" compileSdk = 33 defaultConfig { minSdk = 21 targetSdk = 33 } compileOptions { sourceCompatibility(JavaVersion.VERSION_1_8) targetCompatibility(JavaVersion.VERSION_1_8) } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() } } dependencies { api(project(":core:data")) // Expose data layer to other modules that depend on this one api(project(":core:model")) // Add any specific libraries needed by auth feature here } ``` #### 核心数据层(`core/data/build.gradle.kts`) 核心数据层处理与持久存储有关的操作以及网络请求等基础设施级别的工作. ```kotlin plugins { alias(libs.plugins.androidLibrary) alias(libs.plugins.kotlinAndroid) } android { namespace = "com.example.core.data" compileSdk = 33 defaultConfig { minSdk = 21 targetSdk = 33 } compileOptions { sourceCompatibility(JavaVersion.VERSION_1_8) targetCompatibility(JavaVersion.VERSION_1_8) } kotlinOptions { jvmTarget = JavaVersion.VERSION_1_8.toString() } } dependencies { implementation(project(":core:model")) // Include Retrofit or OkHttp for networking if necessary } ``` 这种分层架构有助于分离关注点并将复杂度分解成易于管理和测试的小单元[^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值