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

相关推荐
百香果果ccc1 小时前
Maven的依赖管理
java·数据库·maven
百香果果ccc1 小时前
maven的项目构建
java·maven
Vic101011 小时前
Maven 的常用指令
java·maven
LuXi_foryou3 小时前
Cannot resolve symbol ‘view‘ Androidstudio报错解决办法
android·java·android studio
kfepiza5 小时前
AndroidStudio打包apk创建keystore时报: Error Failed to create keystore. 250311记录
android studio
好多大米6 小时前
2.JVM-通俗易懂理解类加载过程
java·jvm·spring·spring cloud·tomcat·maven·intellij-idea
Yang-Never6 小时前
OpenGL ES ->帧缓冲对象(Frame Buffer Object)离屏渲染获取纹理贴图
android·开发语言·kotlin·android studio·贴图
qq_13948428827 小时前
springboot433-基于SpringBoot的流浪猫爱心救助系统(源码+数据库+纯前后端分离+部署讲解等)
java·数据库·vue.js·spring boot·后端·maven·intellij-idea
yuren_xia20 小时前
eclipse创建maven web项目
前端·eclipse·maven