我是靠谱客的博主 哭泣皮皮虾,最近开发中收集的这篇文章主要介绍把Android库项目发布到maven仓库且带上源代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用AndroidStudio最新版本(现在是2021年8月9日,版本为:Android Studio Arctic Fox 2020.3.1),创建一个库项目,在库项目的build.gradle文件前面添加maven-publish插件,如下:

plugins {
    id 'com.android.library'
    id 'kotlin-android'
    id 'maven-publish'
}

然后在文件的最后,添加如下内容:

// 用于打包源代码的任务
task androidSourcesJar(type: Jar) {
    archiveClassifier.set('sources')
    from android.sourceSets.main.java.srcDirs
}

// 用于把aar打包到maven仓库的任务
afterEvaluate {
    publishing {
        publications {
            release(MavenPublication) {
                from components.release
                artifact androidSourcesJar
                groupId = 'cn.android666.contextholder' // 库的组织,使用域名表示
                artifactId = 'contextholder' // 库名称
                version = '1.1.1' // 库版本
            }
        }

        repositories {
            maven {
                allowInsecureProtocol = true // 仓库默认不允许使用非https协议,所以这里设置为允许
                url 'http://192.168.1.251:8081/content/repositories/android_repositories/' // 公司maven仓库地址
                credentials {
                    username 'even'     // maven仓库账号
                    password '123456'   // maven仓库密码
                }
            }
        }
    }
}

在这里插入图片描述
按如上图的方式操作即可,第3步为选择你这个publish任务所在的模块。第4步输入publish然后按回车,这样发布的aar是带源码的,即打开类时可以看到源代码。

使用生成的aar
在settings.gradle中要先把公司的maven仓库地址设置好,如下:

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()

        // 公司仓库
        maven {
            allowInsecureProtocol = true // 仓库默认不允许使用非https协议,所以这里设置为允许
            url 'http://192.168.1.251:8081/content/repositories/android_repositories/'
        }
    }
}
rootProject.name = "ContextHolderLib"
include ':app'
include ':ContextHolder'

设置好仓库地址后,就可以在module的build.gradle中依赖我们的aar库了,如下:

dependencies {

    implementation 'androidx.core:core-ktx:1.5.0'
    implementation 'androidx.appcompat:appcompat:1.2.0'
    
    // ContextHolder
    implementation 'cn.android666.contextholder:contextholder:1.1.1'
}

实现本功能时参考的一些连接如下:

  • https://docs.gradle.org/7.0/userguide/publishing_maven.html#publishing_maven
  • https://docs.gradle.org/current/userguide/publishing_maven.html
  • https://developer.android.google.cn/studio/build/maven-publish-plugin
  • https://proandroiddev.com/android-library-distribution-with-maven-publish-28ac59b8ecb8
  • 带源码和JavaDoc:https://gist.github.com/Robyer/a6578e60127418b380ca133a1291f017
  • 开源:https://github.com/wupdigital/android-maven-publish,也可参考这里面android-maven-publish/plugin/build.gradle中的内容。

2023.1.30更新,目前版本是:Android Studio Dolphin | 2021.3.1 Patch1,在发布aar到maven时官方已有更新官方教程:https://developer.android.com/studio/publish-library,一定要看英文版,中文版的内容是过时的。

简化内容如下:

plugins {
    id 'com.android.library'
    id 'org.jetbrains.kotlin.android'
    id 'maven-publish'
}

android {

    compileSdk 33

    namespace 'cn.dazhou.utils'

    defaultConfig {
        。。。
    }

	。。。

    publishing {
        singleVariant('release') {
            withSourcesJar()
        }
    }
}

dependencies {
   。。。
}

// 用于把aar打包到maven仓库的任务,官方教程:https://developer.android.com/studio/publish-library,一定要看英文版,中文版的内容是过时的。
publishing {
    publications {
        release(MavenPublication) {
            groupId = 'cn.dazhou.utils'
            artifactId = 'utils'
            version = '1.6.8'

            afterEvaluate {
                from components.release
            }
        }
    }
    repositories {
        maven {
            allowInsecureProtocol = true // 仓库默认不允许使用非https协议,所以这里设置为允许
            url 'http://192.168.1.251:8081/content/repositories/android_repositories/'
            credentials {
                username 'even'
                password '123456'
            }
        }
    }
}

如果公司没有搭建Maven仓库,也可直接使用一个本地的目录做为Maven仓库,比如设置如下:

settings.gradle

dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
       google()
        mavenCentral()        
        maven {
            url 'D:\MavenRepositories'
        }
    }
}

build.gradle

publishing {
    publications {
        release(MavenPublication) {
            groupId = 'cn.dazhou.applist'
            artifactId = 'applist'
            version = '1.3.7'

            afterEvaluate {
                from components.release
            }
        }
    }
    repositories {
        maven {
            url 'D:\MavenRepositories'
        }
    }
}

使用本地目录做为仓库地址时,不需要设置用户名和密码。

最后

以上就是哭泣皮皮虾为你收集整理的把Android库项目发布到maven仓库且带上源代码的全部内容,希望文章能够帮你解决把Android库项目发布到maven仓库且带上源代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部