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

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


一、项目级配置

  1. 配置JDK环境(可选)

    // 项目根目录 gradle.properties 中添加JDK17配置(也可以设置电脑的环境变量未JDK17)
    org.gradle.java.home=C\:\\Program Files\\Java\\jdk-17
    
  2. 项目根目录 build.gradle
    添加Maven插件和仓库源:

    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
// 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
// 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、源码和文档:

    ./gradlew clean   # 清除
    ./gradlew publish   # 发布
    
  2. 查看发布文件
    发布成功后,私有仓库中会生成以下文件结构:
    在这里插入图片描述
    aar包含内容如下:
    在这里插入图片描述
    jar包含内容如下:
    在这里插入图片描述


四、其他项目引用

  1. 配置仓库地址
    在项目的 settings.gradle 中添加私有仓库:

    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 中引用:

    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

猜你喜欢

转载自blog.csdn.net/loutengyuan/article/details/145991350
今日推荐