Android Studio 新版本Gradle发布本地Maven仓库示例

发布代码到JitPack示例:https://blog.csdn.net/loutengyuan/article/details/145938967

以下是基于 Android Studio 24.2.2(Gradle 8.10.2 + AGP 8.8.0 + JDK17) 的本地 Maven 仓库发布示例,包含aar和jar的不同配置:


1. 配置 build.gradle 文件

(1) 项目级 build.gradle
groovy 复制代码
// 项目根目录 build.gradle
buildscript {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        google()
        mavenCentral()
    }
    dependencies {
        classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.9.10" // 如果要编译javadoc,需要添加这个依赖
    }
}
(2) 项目级 gradle.properties(非必须)
groovy 复制代码
// 项目根目录 gradle.properties 中添加JDK17配置(也可以设置电脑的环境变量未JDK17)
org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17
(3) aar模块 build.gradle
groovy 复制代码
// aar模块 build.gradle
plugins {
    alias(libs.plugins.android.library)
    alias(libs.plugins.maven.publish)
}

android {
    namespace 'com.lois.aarlib'
    compileSdk 35

    defaultConfig {
        minSdk 21

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles "consumer-rules.pro"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    // 以下是本地构建配置,用于发布到maven仓库,显式声明发布配置(关键修复)
    publishing {
        singleVariant("release") {
            // 显式声明发布配置
            withSourcesJar()
            // doc发布需要添加"org.jetbrains.dokka:dokka-gradle-plugin:1.9.10"插件
            withJavadocJar()
        }
    }
}

dependencies {

    implementation libs.appcompat
    implementation libs.material
    testImplementation libs.junit
    androidTestImplementation libs.ext.junit
    androidTestImplementation libs.espresso.core

}

// 发布配置
afterEvaluate {
    try {
        publishing {
            publications {
                release(MavenPublication) { // 定义发布名称(如 release 或 debug)
                    from components.release  // Android库使用release变体
                    groupId = "com.github.luotengyuan.MavenTest" // 组 ID
                    artifactId = "AarLib" // 项目名称
                    version = "1.0.0" // 版本号
                }
            }

            repositories {
                maven {
                    url = uri("${rootProject.projectDir}/repository") // 动态路径配置
                }
            }
        }
    } catch (Exception e) {
        println "发布配置失败: ${e.message}" // 添加错误处理
    }
}
(4) jar模块 build.gradle
groovy 复制代码
// jar模块 build.gradle
plugins {
    id 'java-library'
    alias(libs.plugins.maven.publish)
}

java {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
}

// 发布配置
afterEvaluate {
    try {
        publishing {
            publications {
                release(MavenPublication) { // 定义发布名称(如 release 或 debug)
                    from components.java  // Java库使用
                    groupId = "com.github.luotengyuan.MavenTest" // 组 ID
                    artifactId = "JarLib" // 项目名称
                    version = "1.0.0" // 版本号
                    artifact sourcesJar // 添加源码发布配置
                    artifact docJar // 添加源码发布配置
                }
            }

            repositories {
                maven {
                    url = uri("${rootProject.projectDir}/repository") // 动态路径配置
                }
            }
        }
    } catch (Exception e) {
        println "发布配置失败: ${e.message}" // 添加错误处理
    }
}

tasks.register('sourcesJar', Jar) {
    from sourceSets.main.allJava
    archiveClassifier = 'sources'
}

tasks.register('docJar', Jar) {
    dependsOn javadoc // 确保先执行javadoc任务
    from javadoc.destinationDir // 使用javadoc生成的文档目录
    archiveClassifier = 'javadoc' // 修改分类器标识
}

2. 发布到本地 Maven 仓库

在终端中执行以下命令,将 AAR 文件发布到本地仓库:

bash 复制代码
./gradlew clean  
./gradlew publish
发布后的文件结构

发布后再项目根目录多了一个 repository 文件夹,这就是本地仓库地址,结构如下:


3. 在其他项目中引用本地仓库

在需要引用该库的项目中,配置 build.gradle 文件:

(1) 添加本地仓库路径

在 setting.gradle 上添加仓库地址

groovy 复制代码
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven {
            url "file://E:/AS24WorkSpace/MavenLocalTest/repository"
        }
        google()
        mavenCentral()
    }
}
(2) 添加依赖
groovy 复制代码
dependencies {
	implementation 'com.github.luotengyuan.MavenTest:AarLib:1.0.0'
	implementation 'com.github.luotengyuan.MavenTest:JarLib:1.0.0'
}

示例代码:https://github.com/luotengyuan/MavenLocalTest

相关推荐
一笑的小酒馆5 小时前
Android性能优化之截屏时黑屏卡顿问题
android
懒人村杂货铺8 小时前
Android BLE 扫描完整实战
android
TeleostNaCl10 小时前
如何安装 Google 通用的驱动以便使用 ADB 和 Fastboot 调试(Bootloader)设备
android·经验分享·adb·android studio·android-studio·android runtime
fatiaozhang952711 小时前
中国移动浪潮云电脑CD1000-系统全分区备份包-可瑞芯微工具刷机-可救砖
android·网络·电脑·电视盒子·刷机固件·机顶盒刷机
2501_9159184112 小时前
iOS 开发全流程实战 基于 uni-app 的 iOS 应用开发、打包、测试与上架流程详解
android·ios·小程序·https·uni-app·iphone·webview
lichong95112 小时前
【混合开发】vue+Android、iPhone、鸿蒙、win、macOS、Linux之dist打包发布在Android工程asserts里
android·vue.js·iphone
Android出海12 小时前
Android 15重磅升级:16KB内存页机制详解与适配指南
android·人工智能·新媒体运营·产品运营·内容运营
一只修仙的猿12 小时前
毕业三年后,我离职了
android·面试
编程乐学13 小时前
安卓非原创--基于Android Studio 实现的新闻App
android·ide·android studio·移动端开发·安卓大作业·新闻app
雅雅姐14 小时前
Android14 init.rc中on boot阶段操作4
android