Android库发布到MavenCentral超详细攻略

Android库发布到MavenCentral超详细攻略

2023年6月27日发(作者:)

Android库发布到MavenCentral超详细攻略掘⾦迁移地址前⾔最近写了⼀个⾃动化打包上传到蒲公英等三⽅平台,在飞书的群机器⼈中发送消息,解放双⼿,⽅便测试⼈员下载的项⽬,想发布到远程服务器供⽅便调⽤,但是记得JCenter已经宣布在2020年5⽉1⽇,停⽌新的库的提交(只能使⽤,不能再提交),在2022年2⽉21号以前,连库的解析服务也停⽌,所以,尝试将打包库发布到maven central上。需要哪些⼯具1: sonatype2: nexus3: Github第⼀步 · Sonatype Jira配置与jCenter⼀样,Maven Central是由sonatype运营的,那么⾸先需要去注册⼀个sonatype的账号并获得仓库使⽤许可。注册⾸先需要到注册账号,界⾯如图:填写邮箱、⽤户名、密码信息即可注册成功注意:邮箱很重要,建议是你常⽤的邮箱,以便及时收到

Sonatype 在

issue 中的答复。注册成功后再次回到登录页⾯,填写刚才注册的⽤户名和密码即可在Sonatype完成登陆,如下图。注册需要填写邮箱(重要,请填写真实的邮箱)、名字、⽤户名(重要,⽤于登录)、密码(需要含符号、英⽂和数字的复杂密码),和验证码完成注册。创建问题按照图中所⽰,我们创建⼀个问题。该步骤中唯⼀需要注意的地⽅就是

Group Id,填写错sonatype⼯作⼈员会给你提⼀个issue,有两种情况:⽆⽹站域名:使⽤ github 的⼦域名

me,⽐如我的 github 账号名是 Eegets,那么可以填写

。有⽹站域名:可以填写个⼈或公司域名,⽐如:,另外,还需要在 DNS 配置中配置⼀个 TXT 记录来验证域名所有权,具体请看:/pages/produ…创建以后,会有管理员处理你的这个issue,等待管理员回复你的issue,⼀般需要设置⼀步:在github上创建⼀个空的仓库,我的空仓库名为:OSSRH-75861。第⼆就是是否要修改groupId。管理员回复我的如下图:当该问题状态变为已解决,则证明我们sonatype项⽬已经完成了申请,如下图第⼆步·Gradle配置接下来打开你的项⽬,在项⽬根⽬录创建⼀个后缀为.gradle的⽂件「我创建的⽂件名为:」,如下:该⽂件是通⽤的⽂件配置,直接copy修改⾥边的⼀些配置项即可apply plugin: 'maven-publish'apply plugin: 'signing'task androidSourcesJar(type: Jar) { classifier = 'sources' exclude "**/" //排除`` exclude "**/" //排除``}//第 1 处ext[""] = '' //签名的密钥后8位ext["rd"] = '' //签名设置的密码ext["KeyRingFile"] = '' //⽣成的⽂件⽬录ext["ossrhUsername"] = '' //sonatype⽤户名ext["ossrhPassword"] = '' //sonatype密码File secretPropsFile = ('ties')if (()) { println "Found secret props file, loading props" Properties p = new Properties() (new FileInputStream(secretPropsFile)) { name, value -> ext[name] = value }} else { println "No props file, loading env vars"}publishing { publications { release(MavenPublication) { println("publish-maven Log-------> PUBLISH_GROUP_ID: $PUBLISH_GROUP_ID; PUBLISH_ARTIFACT_ID: $PUBLISH_ARTIFACT_ID; PUBLISH_VERSION: $PUBL // The coordinates of the library, being set from variables that

//第 2 处 groupId PUBLISH_GROUP_ID artifactId PUBLISH_ARTIFACT_ID version PUBLISH_VERSION // Two artifacts, the `aar` and the sources artifact("../plugin/com/eegets/plugin/upload/${PUBLISH_VERSION}/upload-${PUBLISH_VERSION}.jar") artifact androidSourcesJar // Self-explanatory metadata for the most part pom {

//第 3 处 name = PUBLISH_ARTIFACT_ID description = '⾃动化打包上传到蒲公英等三⽅平台,解放双⼿,⽅便测试⼈员下载' //项⽬描述 // If your project has a dedicated site, use its URL here url = '/eegets/UploadApkPlugin' //项⽬github链接 licenses { licenses { license { //协议类型,⼀般默认Apache License2.0的话不⽤改: name = 'The Apache License, Version 2.0' url = '/licenses/' } } developers { developer { //第 4 处 id = 'xxx' //你的sonatype⽤户名 name = 'xxx' //你的sonatype⽤户名 email = 'xxx' //你的sonatype注册邮箱 } } // Version control info, if you're using GitHub, follow the format as seen here scm { //第 5 处 //修改成你的Git地址: connection = 'scm:git@:eegets/' developerConnection = 'scm:git@:eegets/' //分⽀地址: url = '/eegets/UploadApkPlugin/tree/master' } // A slightly hacky fix so that your POM will include any transitive dependencies // that your library builds upon withXml { def dependenciesNode = asNode().appendNode('dependencies') { def dependencyNode = Node('dependency') Node('groupId', ) Node('artifactId', ) Node('version', n) } } } } } repositories { // The repository to publish to, Sonatype/MavenCentral maven { //第 6 处 name = "UploadApkPlugin" def releasesRepoUrl = "/service/local/staging/deploy/maven2/" def snapshotsRepoUrl = "/content/repositories/snapshots/" // You only need this if you want to publish snapshots, otherwise just set the URL // to the release repo directly url = th('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl // The username and password we've fetched earlier credentials { username ossrhUsername password ossrhPassword } } }}signing { sign ations} //此处⽤''替代'',因为``会出现nexus后台⽆法登陆以及发布出现`Received status code 403 fro如上述代码,我们需要配置

6 处第 1 处在项⽬的根⽬录ties⽂件中增加如下配置#//刚才获取的秘钥后8位=XXXX#//步骤4中设置的密码rd=XXXX#//⽣成的⽂件⽬录KeyRingFile=/Users/xxxx/xxxx/#//sonatype⽤户名ossrhUsername=xxxx#//sonatype密码ossrhPassword=xxxx第 2 处在要提交的module下的⽂件中,添加如下代码:注意:此处的ext{}和apply from: '../'顺序⼀定不能乱,必须是先ext,再apply fromext { PUBLISH_ARTIFACT_ID = "uploadPlugin" //你的artifact_id,⼀般是module的名字 PUBLISH_VERSION = "1.0.3" //发布版本号 PUBLISH_GROUP_ID = 'xxx' //你的sonatype的group_id}apply from: '../'第 3 处在配置项⽬描述和项⽬GitHub地址,如下:name = PUBLISH_ARTIFACT_ID description = '项⽬描述' //项⽬描述url = '/eegets/UploadApkPlugin' //项⽬github链接第 4 处配置sonatype的信息,如下:id = 'xxx' //你的sonatype⽤户名

name = 'xxx' //你的sonatype⽤户名

email = 'xxx' //你的sonatype注册邮箱第 5 处配置github信息,如下:connection = 'scm:git@:eegets/' //分⽀地址developerConnection = 'scm:git@:eegets/' //分⽀地址:

url = '/eegets/UploadApkPlugin/tree/master'第 6 处配置项⽬名称和发布地址name = "UploadApkPlugin"

releasesRepoUrl = "/service/local/staging/deploy/maven2/" def

snapshotsRepoUrl = "/content/repositories/snapshots/"创建GPG秘钥1. /download/,从这⾥下载并安装GPG客户端,我的是mac,所以选择如下框中的,点击下⼀步安装即可。如下图1. 安装成功后,打开终端,在命令⾏中执⾏命令gpg --full-gen-key,注意,⼀定要在命令⾏中执⾏命令,不能在客户端界⾯做。1. 如上图,加密⽅式选择RSA and RSA,长度输⼊4096,过期时间直接回车不⽤管,然后输⼊⼀个user ID并且提供⼀个邮箱,我直接⽤的我sonatype的⽤户名和邮箱。最后⼀步输⼊'O',表⽰OK。2. 之后会弹出⼀个对话框,让输⼊密码。: revocation certificate stored as '~/.gnupg/openpgp-revocs.d/'public and secret key created and rsa4096 2021-03-22 [SC] XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXEE478F7CC uid boybeak boybeak@ subrsa4096 2021-03-22 [E] ```这会为你在~/.gnupg/openpgp-revocs.d/⽬录下创建⼀个.rev⽂件,记住pub的末尾8位。1. 接下来创建⽂件,命令⾏执⾏gpg --export-secret-keys -o ,这会要求你输⼊在步骤4中设置的密码,在你项⽬根⽬录下会出现⽂件。因我我是在当前项⽬⽬录下执⾏,所以⽂件⽣成在项⽬根⽬录下。如下图:1. 回到gpg客户端,选择我们刚⽣成的秘钥条⽬,右键,选择Send Public Key to Key Server。记住后边⼋位,如下图圈起来的⼋位:做完以上gpg的配置之后我们就可以完善我们上边第 1 步了。ties配置#//刚才获取的秘钥后8位=XXXX#//步骤4中设置的密码rd=XXXX#//⽣成的⽂件⽬录KeyRingFile=/Users/xxxx/xxxx/#//sonatype⽤户名ossrhUsername=xxxx#//sonatype密码ossrhPassword=xxxx执⾏打包和上传设置完这些后,在AndroidStudio右侧的gradle tasks中找到你想提交的module,先后执⾏以下两个任务。按照上述这么多配置之后,不出意外打包和上传都将成功[如有编译失败,请再翻翻上述⽂章]上传成功后,打开Nexus Repository Manager,登录你的sonatype账号,在左侧Staging Repositories页⾯找到你的group id,选中,点击上边的close,等待⼏分钟⼗⼏分钟后刷新状态,等其状态变为closed后,再点击Release,则所有⼈都⽤使⽤你的库了。接下来,需要等待⼀段时间,待Activity选项卡中出现对号的“Repository closed”即完成准备,然后点击Release按钮发布到MavenCentral,等待⼏个⼩时后可以在 / 查询发布结果。Missing: no javadoc jar found in folder解决办法按照上述⽅式我们就算完成了maven的打包和发布,如果在nexus最后执⾏Close的时候出现Close 失败,并且报:Missing: no javadoc jar found in

folder解决办法,请移步我写的另外⼀篇⽂章 Missing: no javadoc jar found in folder解决办法,关于

Missing: no javadoc jar found in folder解决办法的解决办法注意以上⼏处引⽤的需要注意的地⽅,这些注意的地⽅可以祝你避坑源码参考资料Android库发布到Maven Central全攻略发布Android库到MavenCentral教程

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687841201a49922.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信