Android Studio 新版本Gradle发布Jar和Aar包到私有Nexus Maven仓库示例

以下是发布Android Studio库到私有Maven仓库的实例步骤,结合了Gradle配置、模块化管理和仓库发布的核心流程:


一、项目级配置

  1. 配置JDK环境(可选)

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

    添加Maven插件和仓库源:

    groovy 复制代码
    buildscript {
        repositories {
            maven { url 'https://maven.aliyun.com/repository/public' }
            google()
            mavenCentral()
        }
        dependencies {
            classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.9.10" // 用于生成Javadoc
        }
    }

二、模块级配置

(3) aar模块 build.gradle
groovy 复制代码
// aar模块 build.gradle
plugins {
    alias(libs.plugins.android.library)
    id '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_11
        targetCompatibility JavaVersion.VERSION_11
    }
    publishing {
        singleVariant("release") {
            withSourcesJar()     // 包含源码
            withJavadocJar()    // 包含文档(需dokka插件)
        }
    }
}

dependencies {
    implementation libs.appcompat
    implementation libs.material
    testImplementation libs.junit
    androidTestImplementation libs.ext.junit
    androidTestImplementation libs.espresso.core
}

publishing {
    publications {
        release(MavenPublication) {
            groupId = "com.github.luotengyuan.MavenTest" // 组 ID
            artifactId = "AarLib" // 项目名称
            version = "1.0.0" // 版本号
            afterEvaluate {
                from components.release     // 发布release变体
            }
        }
    }
    repositories {
        maven {
            url = "http://[替换IP]:8081/repository/maven-releases/"  // 替换为私有仓库URL
            allowInsecureProtocol = true    // 新版本gradle默认强制使用https,这里需要设置允许使用http
            credentials {
                username = "用户名"          // 仓库认证用户名
                password = "密码"       // 仓库认证密码
            }
        }
    }
}
(4) jar模块 build.gradle
groovy 复制代码
// jar模块 build.gradle
plugins {
    id 'java-library'
    id 'maven-publish'
}

java {
    sourceCompatibility JavaVersion.VERSION_11
    targetCompatibility JavaVersion.VERSION_11
}

publishing {
    publications {
        release(MavenPublication) {
            groupId = 'com.github.luotengyuan.MavenTest'
            artifactId = 'JarLib'
            version = '1.0.0'
            afterEvaluate {
                from components.java
                artifact sourcesJar // 添加源码发布配置
                artifact docJar // 添加源码发布配置
            }
        }
    }
    repositories {
        maven {
            url = "http://[替换IP]:8081/repository/maven-releases/"  // 替换为私有仓库URL
            allowInsecureProtocol = true    // 新版本gradle默认强制使用https,这里需要设置允许使用http
            credentials {
                username = "用户名"          // 仓库认证用户名
                password = "密码"       // 仓库认证密码
            }
        }
    }
}

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

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

三、发布到私有仓库

  1. 执行发布命令

    执行Gradle任务生成aar、jar、源码和文档:

    bash 复制代码
    ./gradlew clean   # 清除
    ./gradlew publish   # 发布
  2. 查看发布文件

    发布成功后,私有仓库中会生成以下文件结构:

    aar包含内容如下:

    jar包含内容如下:


四、其他项目引用

  1. 配置仓库地址

    在项目的 settings.gradle 中添加私有仓库:

    groovy 复制代码
    dependencyResolutionManagement {
        repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositories {
             maven {
                 url = "http://[替换IP]:8081/repository/maven-releases/"  // 替换为私有仓库URL
                 allowInsecureProtocol = true    // 新版本gradle默认强制使用https,这里需要设置允许使用http
                 credentials {
                     username = "用户名"          // 仓库认证用户名
                     password = "密码"       // 仓库认证密码
                 }
             }
            google()
            mavenCentral()
        }
    }
  2. 添加依赖

    在模块的 build.gradle 中引用:

    groovy 复制代码
    dependencies {
        implementation 'com.github.luotengyuan.MavenTest:AarLib:1.0.0'
        implementation 'com.github.luotengyuan.MavenTest:JarLib:1.0.0'
    }

五、常见问题

  1. 认证失败

    确保 credentials 中的用户名和密码与私有仓库(如Nexus)配置一致。

  2. 版本冲突

    发布新版本时需递增 version 值,避免与历史版本冲突。

  3. 文档生成异常

    检查是否应用了 dokka 插件,并确保代码注释符合Javadoc规范。


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

搭建私有仓库参考:https://blog.csdn.net/loutengyuan/article/details/146157808

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

发布本地仓库示例:https://blog.csdn.net/loutengyuan/article/details/145938967

相关推荐
王六岁1 天前
UIAutomatorViewer 安装指南 (macOS m3pro 芯片)
android studio
多多*2 天前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
jiayong232 天前
Maven NUL文件问题 - 解决方案实施报告
java·maven
0***m8222 天前
Maven Spring框架依赖包
java·spring·maven
Mr_万能胶3 天前
到底原研药,来瞧瞧 Google 官方《Android API 设计指南》
android·架构·android studio
BINGCHN3 天前
NSSCTF每日一练 SWPUCTF2021 include--web
android·前端·android studio
q***49453 天前
SpringBoot Maven 项目 pom 中的 plugin 插件用法整理
spring boot·后端·maven
J不A秃V头A3 天前
Maven的分发管理与依赖拉取
java·maven
2501_941147424 天前
基于 Rust 与 Actix 构建高性能微服务与低延迟分布式系统实践分享
maven
懂得节能嘛.4 天前
【SDK开发实践】从Java编码到阿里云制品仓库部署
java·阿里云·maven