(AS笔记)上传aar包到Maven中央仓库

这篇具有很好参考价值的文章主要介绍了(AS笔记)上传aar包到Maven中央仓库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、SonaType账户注册与登录

        (1)注册

        (2)登录

二、创建工单

        (1)Github子域名验证

(2)自定义域名验证

三、登录Nexus Repository Manager

四、GPG签名生成和发布

五、Android推送aar包

        (1)配置私钥

        (2)配置Gradle推送参数

        snapshot-sonatype-publish.gradle

        release-sonatype-publish.gradle

        将配置引入Module的build.gradle

六、开始推送

七、验证推送成功

        (1)nexus repository manager 快照版

         (2)nexus repository manager 发布版

        (3)https://mvnrepository.com/

八、使用发布成功的aar

        (1)nexus repository manager

         (2)已发布到mvnrepository(中央仓库)

        (3)引入aar依赖成功

九、总结


成功上传效果图

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


一、SonaType账户注册与登录

        (1)注册

        想要推送到maven中央仓库,须先完成账户注册。

        访问SonaType官网:https://issues.sonatype.org/

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


        (2)登录

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java 

登录成功


二、创建工单

        创建一个工单项目为Maven Central,由外国人跟踪工单审核后即可上传到Maven仓库的快照库和发布库。(说明:所有Maven Central的资源库,都从Maven发布库间隔几小时更新)

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

        工单新建后:耐心等待外国大佬审核,他们处理后会向注册时提供的邮箱发送一条英文邮箱。翻译后如下:

        另外注意一点:Already Synced to Central 必须选为Yes, 将自己的依赖库aar自动同步到中央仓库。

 

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


        (1)Github子域名验证

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

        按照邮箱要求创建了项目后,耐心等待外国大佬回复即可。 


(2)自定义域名验证

        本人有自己备案的域名,因此需要去腾讯云DNS解析加上TXT记录。

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

        这里已经完成添加,接下来怎么办?当然是催审了,直接在项目下方追加评论。 英语不好,先翻译copy复制过去。

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

         等着回复就行......任何更新状态不管自己新增、追加平台、响应我们,都会通过邮箱通知的。

由于审核时间耽误我写博客,此处用我上一次工单的信息来继续

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


三、登录Nexus Repository Manager

        访问仓库管理首页:Nexus Repository Manager

        重要说明:登录这个账户与 SonaType注册的账户一样的。登录前提:需要外国大佬全部审核通过,给你开启登录权限、存储权限才可以登录上去。

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

        说明:在Android使用Maven推送插件将资源库推送到Nexus Repository Manager 中,会依据Version是否带有后缀来自动选择推送到快照库还是发布库。如1.0.0-SNAPSHOT 会推送到快照库, 1.0.0 会推送到发布库。当然你如果非要将1.0.0-SNAPSHOT推送到发布库、1.0.0推送到快照库,其实也行,只是不太正规。。按照行内规矩推送就行。


四、GPG签名生成和发布

         GPG是RSA算法加解密软件,将生成的公钥上传到公网能访问的公开密钥库中,其他服服务解密验证私钥后可以进行相关安全的业务操作。因次,SonaType也需要对aar包、jar等依赖库进行加密传输与解密下载,因此需要用到GPG。GPG可以按照在客户端,生成公钥后发布到公网能访问的公开密钥中,私钥本地存储。私钥证书有文件、keyId、密码。这些会在推送资源包时用到。

        GPG安装和使用及生成公钥发布到公网库、私钥存储、keyID(证书指纹后8位)、password 详见:Windows平台GPG签名生成和发布_gpg1.50.2下载_VinRichard的博客-CSDN博客

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


五、Android推送aar包

        Android借助Gradle推送,Gradle7.0以下使用 apply plugin: 'maven'、Gradle7.0以上 使用 apply plugin: 'maven-publish',本文使用的是Grale7.0以上。

        (1)配置私钥

        在AndroidStudio的gradle.properties配置文件中,编辑以下信息

# Signing Plugin Config
signing.keyId= 证书指纹后8位
signing.password=证书密码
signing.secretKeyRingFile=file:H://xx//xx//_SECRET.gpg 证书本地绝对路径

        (2)配置Gradle推送参数

        在Moudle根目录新建文件:snapshot-sonatype-publish.gradle(配置快照库release-sonatype-publish.gradle(配置发布库。配置内容如下:(本人习惯分开配置,因为尝试过用一个配置文件,在其中判断版本后缀是否带有SNAPSHOT来动态选择推送是发布库还是快照库

        snapshot-sonatype-publish.gradle

apply plugin: 'maven-publish'
apply plugin: 'signing'

//仓库的用户名
static def getRepositoryUsername() {
    return "SonaType注册的登录用户名"
}

//仓库的密码
static def getRepositoryPassword() {
    return "SonaType注册的登录密码"
}

if (project.hasProperty("android")) { // Android库
    task sourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.srcDirs
    }
    task javadoc(type: Javadoc) {
        excludes = ['**/*.kt'] // 从javadoc文件中排除所有kotlin文件
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
        options.encoding = "utf-8"
        options.charSet = "utf-8"
    }
} else { //Java库
    task sourcesJar(type: Jar, dependsOn: classes) {
        classifier = 'sources'
        from sourceSets.main.allSource
    }
}

// 强制Java编码为UTF-8
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

//强制JavaDoc编码为UTF-8
tasks.withType(Javadoc) {
    options.encoding = "UTF-8"
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

//签名
signing {
    //required { gradle.taskGraph.hasTask("afterEvaluate") }
    sign configurations.archives
}

//配置上传包的参数
afterEvaluate {
    publishing {
        publications {
            myReleasePlugin(MavenPublication) {
                groupId 'xxxx'//对应sonatype平台新建中的Group Id
                artifactId 'xxx' //项目唯一标识符,对应项目名称
                version '1.0.0-SNAPSHOT' //发布为版本后缀是SNAPSHOT
                //artifact(javadocJar)//将javadoc文档工件打包进aar
                artifact(sourcesJar)//将Java注释工件打包进aar
                // 依赖 bundleDebugAar 任务,并上传其产出的aar
                artifact(tasks.getByName("bundleReleaseAar"))
                // 依赖传递:pom文件中声明依赖,从而传递到使用方,aar使用的依赖都打包进这个moudle,引入这个moudle依赖时,其他的依赖自动下载。本人不使用,避免重复依赖太多,项目过大
//                pom.withXml {
//                    def dependenciesNode = asNode().appendNode('dependencies')
//                    configurations.implementation.allDependencies.each {
//                        // 避免出现空节点或 artifactId=unspecified 的节点
//                        if (it.group != null && (it.name != null && "unspecified" != it.name) && it.version != null) {
//                            println "dependency=${it.toString()}"
//                            def dependencyNode = dependenciesNode.appendNode('dependency')
//                            dependencyNode.appendNode('groupId', it.group)
//                            dependencyNode.appendNode('artifactId', it.name)
//                            dependencyNode.appendNode('version', it.version)
//                            dependencyNode.appendNode('scope', 'implementation')
//                        }
//                    }
//                }
                //项目配置
                pom {
                    packaging 'aar' //安卓Library库:aar 、后端Java:jar
                    name = 'xxx' // 发布库的简单名称 在maven仓库的命名
                    description = 'Androidxxx插件库' // 发布库的描述
                    url = 'https://github.com/用户名/项目名' //Github项目首页
                    //Git项目信息
                    scm {
                        //git项目连接地址
                        connection = 'https://https://github.com/用户名/项目名.git'
                        //git项目开发者连接地址
                        developerConnection = 'https://github.com/用户名/项目名.git'
                        //Github项目首页
                        url = 'https://github.com/用户名/项目名.git'
                    }
                    // 开放许可证书
                    licenses {
                        license {
                            //许可名称
                            name = 'The Apache License, Version 2.0'
                            //许可URL
                            url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        }
                    }
                    //开发者SonaType账号的信息——右上角用户信息——汇总 头像下方的三条信息
                    developers {
                        developer {
                            //全名
                            id = 'xxx'
                            //用户名
                            name = 'xxx'
                            //邮箱
                            email = 'xxx@qq.com'
                        }
                    }
                }
            }
        }
    }
}

//配置上传SonaType仓库Maven地址和密码
publishing {
    repositories {
        //开发版
        maven {
            url 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
            credentials {
                username = getRepositoryUsername()
                password = getRepositoryPassword()
            }
        }
    }
}

        release-sonatype-publish.gradle

apply plugin: 'maven-publish'
apply plugin: 'signing'

//仓库的用户名
static def getRepositoryUsername() {
    return "SonaType注册的登录用户名"
}

//仓库的密码
static def getRepositoryPassword() {
    return "SonaType注册的登录密码"
}

if (project.hasProperty("android")) { // Android库
    task sourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.srcDirs
    }
    task javadoc(type: Javadoc) {
        excludes = ['**/*.kt'] // 从javadoc文件中排除所有kotlin文件
        source = android.sourceSets.main.java.srcDirs
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
        options.encoding = "utf-8"
        options.charSet = "utf-8"
    }
} else { //Java库
    task sourcesJar(type: Jar, dependsOn: classes) {
        classifier = 'sources'
        from sourceSets.main.allSource
    }
}

// 强制Java编码为UTF-8
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

//强制JavaDoc编码为UTF-8
tasks.withType(Javadoc) {
    options.encoding = "UTF-8"
}

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

//签名
signing {
    //required { gradle.taskGraph.hasTask("afterEvaluate") }
    sign configurations.archives
}

//配置上传包的参数
afterEvaluate {
    publishing {
        publications {
            myReleasePlugin(MavenPublication) {
                groupId 'xxxx'//对应sonatype平台新建中的Group Id
                artifactId 'xxx' //项目唯一标识符,对应项目名称
                version '1.0.0-SNAPSHOT' //发布为版本没有
                //artifact(javadocJar)//将javadoc文档工件打包进aar
                artifact(sourcesJar)//将Java注释工件打包进aar
                // 依赖 bundleDebugAar 任务,并上传其产出的aar
                artifact(tasks.getByName("bundleReleaseAar"))
                // 依赖传递:pom文件中声明依赖,从而传递到使用方,aar使用的依赖都打包进这个moudle,引入这个moudle依赖时,其他的依赖自动下载。本人不使用,避免重复依赖太多,项目过大
//                pom.withXml {
//                    def dependenciesNode = asNode().appendNode('dependencies')
//                    configurations.implementation.allDependencies.each {
//                        // 避免出现空节点或 artifactId=unspecified 的节点
//                        if (it.group != null && (it.name != null && "unspecified" != it.name) && it.version != null) {
//                            println "dependency=${it.toString()}"
//                            def dependencyNode = dependenciesNode.appendNode('dependency')
//                            dependencyNode.appendNode('groupId', it.group)
//                            dependencyNode.appendNode('artifactId', it.name)
//                            dependencyNode.appendNode('version', it.version)
//                            dependencyNode.appendNode('scope', 'implementation')
//                        }
//                    }
//                }
                //项目配置
                pom {
                    packaging 'aar' //安卓Library库:aar 、后端Java:jar
                    name = 'xxx' // 发布库的简单名称 在maven仓库的命名
                    description = 'Androidxxx插件库' // 发布库的描述
                    url = 'https://github.com/用户名/项目名' //Github项目首页
                    //Git项目信息
                    scm {
                        //git项目连接地址
                        connection = 'https://https://github.com/用户名/项目名.git'
                        //git项目开发者连接地址
                        developerConnection = 'https://github.com/用户名/项目名.git'
                        //Github项目首页
                        url = 'https://github.com/用户名/项目名.git'
                    }
                    // 开放许可证书
                    licenses {
                        license {
                            //许可名称
                            name = 'The Apache License, Version 2.0'
                            //许可URL
                            url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        }
                    }
                    //开发者SonaType账号的信息——右上角用户信息——汇总 头像下方的三条信息
                    developers {
                        developer {
                            //全名
                            id = 'xxx'
                            //用户名
                            name = 'xxx'
                            //邮箱
                            email = 'xxx@qq.com'
                        }
                    }
                }
            }
        }
    }
}

//配置上传SonaType仓库Maven地址和密码
publishing {
    repositories {
        //发布版
        maven {
            url 'https://s01.oss.sonatype.org/content/repositories/releases/'
            credentials {
                username = getRepositoryUsername()
                password = getRepositoryPassword()
            }
        }
    }
}

        将配置引入Module的build.gradle

plugins {
    id 'com.android.library'
}
//sonatype平台的maven中央库配置文件
//发布版
//apply from: "release-sonatype-publish.gradle"
//开发版
apply from: "snapshot-sonatype-publish.gradle"

android {
    compileSdk 31

    defaultConfig {
        minSdk 16
        targetSdk 33
        versionCode 1
        versionName "1.0"
        ...

至此,配置完成!


六、开始推送

        此处将moudle名为utils的aar包推送到Maven快照库。 

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


七、验证推送成功

        (1)nexus repository manager 快照版

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


         (2)nexus repository manager 发布版

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


        (3)https://mvnrepository.com/

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


八、使用发布成功的aar

        (1)nexus repository manager

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

        //SonaType Maven 仓库地址
        maven { url 'https://s01.oss.sonatype.org/content/repositories/releases/'}
        maven { url 'https://s01.oss.sonatype.org/content/repositories/snapshots/'}

说明:必须在AndroidStudio项目根目录setting.gradle问加入以上两行maven地址,下载依赖时会去里面下载(因为这里面是我们发布推送进去的)。

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

使用快照版的,快照版去掉-SNAPSHOT


         (2)已发布到mvnrepository(中央仓库)

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java

    mavenCentral()

 说明:必须在AndroidStudio项目根目录setting.gradle问加入mavenCentral()


        (3)引入aar依赖成功

(AS笔记)上传aar包到Maven中央仓库,AS笔记,笔记,maven,java


九、总结

仅自己学习记录,如有错误,敬请谅解~,谢谢~~文章来源地址https://www.toymoban.com/news/detail-682011.html

到了这里,关于(AS笔记)上传aar包到Maven中央仓库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java 中级】Maven 本地仓库、中央仓库、私仓

    👉 博主介绍 : 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区:个人社区 💞 个人主页:个人主页 🙉 专栏地址: ✅ Java 初阶 🙉八股文专题:剑指大厂,手撕

    2024年02月05日
    浏览(46)
  • 向 Maven 中央仓库上传一个修改过的基于jeecg的autoPOI的 jar包记录

    1、注册https://issues.sonatype.org/账号 下面就代表注册好了,同时提交的工单也通过了  2、这里主要是goupId 需要进行认证,需要到域名注册商近一个txt的解析,以便确保这个是你的 通过下面来验证你的域名信息,这里主要是上面的工单号码要包括进去,我这里是一个链接地址作

    2024年02月14日
    浏览(41)
  • IDEA上传jar包到Maven

     mvn install:install-file  \\\"-Dfile=core-3.5.0.jar\\\"   \\\"-DgroupId=com.thunisoft.zxing\\\"   \\\"-DartifactId=javase\\\"  \\\"-Dversion=3.5.0\\\"    \\\"-Dpackaging=jar\\\"   \\\"-DgeneratePom=false\\\"  

    2024年02月04日
    浏览(41)
  • Maven发布中央仓库始终报403

    把域名 oss.sonatype.org  全部替换为: s01 .oss.sonatype.org  

    2024年02月15日
    浏览(37)
  • maven中央仓库不能访问的解决办法

    导入Maven项目,编译时候出错,好象是接不上apache.org/maven2,下载不了maven-resources-plugin-2.6.jar 这个jar包 出错内容: Plain Text code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [INFO]?Scanning?for?projects... [INFO] [INFO]?------------------------------------------------------------------------ [INFO]?Building?maven

    2024年02月13日
    浏览(37)
  • idea中Maven引入jar包失败,教你手动导入jar包到Maven仓库

    本文主要介绍在Idea中引入jar包失败的情况下,如何手动将所需要的jar包有本地导入到Maven仓库。话不多说直接上步骤 先简单了解一下产生的原因: 引入包爆红的原因可能是jar包不完整,也可能是下载失败了。比如这样 如下图所示,里面没有jar包,就是一个空的指引,所以

    2024年02月09日
    浏览(54)
  • 私有jar包发布到maven中央仓库

    一、注册Jira Sonatype JIRA https://issues.sonatype.org/secure/Dashboard.jspa 二、新建issue 提交后,等待5-10分钟,会收到中央机器人的评论,如下: 在这里,我没有自己的域名,此时: 1、机器人给我们分配了一个新的group id(如图第一个蓝色框)。于是再次编辑该issue,填入新分配的grou

    2024年02月04日
    浏览(44)
  • 【拥抱开源】发布自己的项目到maven中央仓库

    官网注册账号地址 username不能是中文,不让后面会出问题 一定要选如图的选项 图4.1 概要 :填你的项目名 groupid :如果gitee上的项目就填 io.gitee+下图所示antopen ,如果是公司(有域名和公司邮箱),就填 com.公司名称 project url :项目地址 SCM url :项目克隆地址(后面以.git结

    2024年02月03日
    浏览(51)
  • 一篇搞定发布自己的类库到Maven中央仓库

    在Maven项目中,90%以上的jar包是通过pom文件直接从开源仓库中获取依赖jar包文件,然后在项目中进行集成使用。 此时如果你有一个开源项目,那么如何将该开源项目发布到Maven中央仓库,让其他人可以方便的使用,而不是先下载jar,然后install的本地? 本文将通过一步步的操作

    2024年02月05日
    浏览(37)
  • Maven导入sqlserver驱动jar包依赖包到本地仓库并引用

    一、配置maven环境变量 (1)、找到此电脑右键----点击属性----选择高级系统设置----点击环境变量----新建系统变量 (2)、新建系统变量:MAVEN_HOME,变量值填你maven解压的路径,然后点击确定。 (3)、在已有的path系统变量里,点击编辑,在变量值的最后填写%MAVEN_HOME%bin。 (4)、验证是

    2023年04月08日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包