Android Studio 新版本Gradle发布当地Maven堆栈示例

[复制链接]
发表于 2025-10-21 19:25:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
以下是基于 Android Studio 24.2.2(Gradle 8.10.2 + AGP 8.8.0 + JDK17) 的当地 Maven 堆栈发布示例,包罗aar和jar的差别设置:

1. 设置 build.gradle 文件

(1) 项目级 build.gradle

  1. // 项目根目录 build.gradle
  2. buildscript {
  3.     repositories {
  4.         maven { url 'https://maven.aliyun.com/repository/public' }
  5.         google()
  6.         mavenCentral()
  7.     }
  8.     dependencies {
  9.         classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.9.10" // 如果要编译javadoc,需要添加这个依赖
  10.     }
  11. }
复制代码
(2) 项目级 gradle.properties(非必须)

  1. // 项目根目录 gradle.properties 中添加JDK17配置(也可以设置电脑的环境变量未JDK17)
  2. org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17
复制代码
(3) aar模块 build.gradle

  1. // aar模块 build.gradle
  2. plugins {
  3.     alias(libs.plugins.android.library)
  4.     alias(libs.plugins.maven.publish)
  5. }
  6. android {
  7.     namespace 'com.lois.aarlib'
  8.     compileSdk 35
  9.     defaultConfig {
  10.         minSdk 21
  11.         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
  12.         consumerProguardFiles "consumer-rules.pro"
  13.     }
  14.     buildTypes {
  15.         release {
  16.             minifyEnabled false
  17.             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
  18.         }
  19.     }
  20.     compileOptions {
  21.         sourceCompatibility JavaVersion.VERSION_17
  22.         targetCompatibility JavaVersion.VERSION_17
  23.     }
  24.     // 以下是本地构建配置,用于发布到maven仓库,显式声明发布配置(关键修复)
  25.     publishing {
  26.         singleVariant("release") {
  27.             // 显式声明发布配置
  28.             withSourcesJar()
  29.             // doc发布需要添加"org.jetbrains.dokka:dokka-gradle-plugin:1.9.10"插件
  30.             withJavadocJar()
  31.         }
  32.     }
  33. }
  34. dependencies {
  35.     implementation libs.appcompat
  36.     implementation libs.material
  37.     testImplementation libs.junit
  38.     androidTestImplementation libs.ext.junit
  39.     androidTestImplementation libs.espresso.core
  40. }
  41. // 发布配置
  42. afterEvaluate {
  43.     try {
  44.         publishing {
  45.             publications {
  46.                 release(MavenPublication) { // 定义发布名称(如 release 或 debug)
  47.                     from components.release  // Android库使用release变体
  48.                     groupId = "com.github.luotengyuan.MavenTest" // 组 ID
  49.                     artifactId = "AarLib" // 项目名称
  50.                     version = "1.0.0" // 版本号
  51.                 }
  52.             }
  53.             repositories {
  54.                 maven {
  55.                     url = uri("${rootProject.projectDir}/repository") // 动态路径配置
  56.                 }
  57.             }
  58.         }
  59.     } catch (Exception e) {
  60.         println "发布配置失败: ${e.message}" // 添加错误处理
  61.     }
  62. }
复制代码
(4) jar模块 build.gradle

  1. // jar模块 build.gradle
  2. plugins {
  3.     id 'java-library'
  4.     alias(libs.plugins.maven.publish)
  5. }
  6. java {
  7.     sourceCompatibility JavaVersion.VERSION_17
  8.     targetCompatibility JavaVersion.VERSION_17
  9. }
  10. // 发布配置
  11. afterEvaluate {
  12.     try {
  13.         publishing {
  14.             publications {
  15.                 release(MavenPublication) { // 定义发布名称(如 release 或 debug)
  16.                     from components.java  // Java库使用
  17.                     groupId = "com.github.luotengyuan.MavenTest" // 组 ID
  18.                     artifactId = "JarLib" // 项目名称
  19.                     version = "1.0.0" // 版本号
  20.                     artifact sourcesJar // 添加源码发布配置
  21.                     artifact docJar // 添加源码发布配置
  22.                 }
  23.             }
  24.             repositories {
  25.                 maven {
  26.                     url = uri("${rootProject.projectDir}/repository") // 动态路径配置
  27.                 }
  28.             }
  29.         }
  30.     } catch (Exception e) {
  31.         println "发布配置失败: ${e.message}" // 添加错误处理
  32.     }
  33. }
  34. tasks.register('sourcesJar', Jar) {
  35.     from sourceSets.main.allJava
  36.     archiveClassifier = 'sources'
  37. }
  38. tasks.register('docJar', Jar) {
  39.     dependsOn javadoc // 确保先执行javadoc任务
  40.     from javadoc.destinationDir // 使用javadoc生成的文档目录
  41.     archiveClassifier = 'javadoc' // 修改分类器标识
  42. }
复制代码

2. 发布到当地 Maven 堆栈

在终端中实行以下下令,将 AAR 文件发布到当地堆栈:
  1. ./gradlew clean  
  2. ./gradlew publish
复制代码
发布后的文件布局

发布后再项目根目次多了一个 repository 文件夹,这就是当地堆栈地点,布局如下:



3. 在其他项目中引用当地堆栈

在必要引用该库的项目中,设置 build.gradle 文件:
(1) 添加当地堆栈路径

在 setting.gradle 上添加堆栈地点
  1. dependencyResolutionManagement {
  2.     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  3.     repositories {
  4.         maven {
  5.             url "file://E:/AS24WorkSpace/MavenLocalTest/repository"
  6.         }
  7.         google()
  8.         mavenCentral()
  9.     }
  10. }
复制代码
(2) 添加依赖

  1. dependencies {
  2.         implementation 'com.github.luotengyuan.MavenTest:AarLib:1.0.0'
  3.         implementation 'com.github.luotengyuan.MavenTest:JarLib:1.0.0'
  4. }
复制代码

   示例代码:https://github.com/luotengyuan/MavenLocalTest
发布代码到JitPack示例:
发布私有堆栈示例:
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表