文章

Android BOM 聚合依赖

系统 环境 :Mac
Android 版本:Android Studio Narwhal | 2025.1.1 Patch 1
Gradle 版本 8.7

1
2
3
4
5
plugins {
    id 'com.android.application' version '8.6.0' apply false
    id 'com.android.library' version '8.6.0' apply false
    id 'org.jetbrains.kotlin.android' version '2.1.0' apply false
}

File → New → New Module… → Android Library 删除该 module 下所有文件,仅保留 build.gradle

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
plugins {
  id 'java-platform'
  id 'maven-publish'
}
// BOM 的 GAV (GroupId, ArtifactId, Version)
group = "com.snote.bom"
version = "2025.09.08-SNAPSHOT" // BOM 的版本号
javaPlatform {
    // 允许这个平台(BOM)不声明任何直接的依赖项
    allowDependencies()
}

// 这是定义 BOM 内容的地方
dependencies {
    // 使用 constraints 来定义版本约束
    constraints {
        // api 表示这些约束会被发布到 POM 文件的 <dependencyManagement> 中
        // 你可以加入一些你希望统一的第三方库
        api "com.squareup.okhttp3:okhttp:4.12.0"
        api "com.google.code.gson:gson:2.10.1"
  }
}

// 配置发布任务
publishing {
    publications {
        javaPlatform(MavenPublication) {
            artifactId = 'snote-bom'
            from components.javaPlatform
        }
    }
    repositories {
    maven {
        name = 'Nexus' // (可选) 
        url = uri(project.findProperty("NEXUS_UPLOADE_URL"))
        credentials {
            username = project.findProperty("NEXUS_UPLOADE_USERNAME")
            password = project.findProperty("NEXUS_UPLOADE_PASSWORD")
        }
    }
  }
}

在gradle.properties文件中配置 ```groovy NEXUS_UPLOADE_URL=https://maven.snotex.xxx/nexus/repository/ NEXUS_UPLOADE_USERNAME=user_name NEXUS_UPLOADE_PASSWORD=password

本文由作者按照 CC BY 4.0 进行授权