- 本文使用 Kotlin 语言
使用统一版本管理库的项目结构和具体使用方式。需要在项目中提供一个版本管理库,方便项目内不同的 model 使用统一的三方库。
项目结构,首先建立一个目录 TestProject 作为整个项目的根目录,内部包括 TestApp 主项目代码仓、TestPlugin 版本库项目代码仓、TestBase 基础组件项目代码仓,上述三个项目为平级关系。
TestProject // 项目根目录
-- TestApp // 主项目
-- App // 主 App model
-- LibModel // 业务 model
-- TestPlugin // 插件库 model
-- TestBase // 基础组件项目
-- LibComponent // UI 组件 model
-- LibNetWork // 网络组件 model
1. 版本库 model 定义
1.1. 版本管理库的 build.gradle 文件定义
buildscript {
repositories {
mavenCentral()
google()
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
}
}
apply plugin: 'kotlin'
apply plugin: 'java-gradle-plugin'
repositories {
mavenCentral()
google()
jcenter()
}
dependencies {
implementation gradleApi()
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
gradlePlugin {
plugins {
version {
id = 'com.jaymz.plugin.version'
implementationClass = 'com.jaymz.plugin.version.VersionPlugin'
}
}
}
1.2. 管理库版本定义和三方库常量定义
在项目内实现一个继承自 Plugin 的类,即 VersionPlugin
package com.jaymz.plugin.version
import org.gradle.api.Plugin
import org.gradle.api.Project
class VersionPlugin : Plugin<Project> {
override fun apply(project: Project) {
}
}
定义我们的常量三方库常量类
class 文件内定义常量,共外部引用
object PluginManager {
const val glide = "com.github.bumptech.glide:glide:4.12.0"
}
2. 其他 model 通过版本库引用统一第三方库版本
2.1. 主项目的 setting.builde 文件
导入同级的项目到主项目内,includeBuild(new File(settingsDir, "project path"))
rootProject.name = "TestDemo"
include ':app'
include ':LibModel'
// 导入插件管理项目
includeBuild(new File(settingsDir, "../TestPlugin"))
// 导入基础项目组件项目
includeBuild(new File(settingsDir, "../TestBase"))
// 引用 base 项目下的本地 model
include 'LibComponent'
include 'LibNetWork'
project(":LibComponent").projectDir = new File(settingsDir, "../TestBase/LibComponent")
project(":LibNetWork").projectDir = new File(settingsDir, "../TestBase/LibNetWork")
2.2. 主项目的 build.gradle 文件
引入自定义的插件库,plugins {}
buildscript {
repositories {
// ...
}
dependencies {
// ...
}
}
plugins {
id("com.jaymz.plugin.version")
}
allprojects {
// ...
}
2.3. 主项目的 LibModel 库的 build.gradle 文件
使用插件管理库提供的三方库
dependencies {
api PluginManager.glide
}