作为一个开发,总是会跟开源组件打交道,现在记下我自己写的开源组件遇到的问题
1.创建一个Android Library
2.修改build.gradle
plugins { id 'com.android.application' }
里面的id 'com.android.application' 改为 id 'com.android.library'
android { compileSdk 32 defaultConfig { // applicationId "com.xjcmpt.fightstreet" } }
把Library下的build.gradle里面的applicationId注释,还有Androidmanifest文件的
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
这个要注释掉,不然会有两个启动图标
3.生成aar文件
outputs\aar下面有生成的aar文件
4.注册一个Sonatype JIRA 账号
这里给个链接System Dashboard - Sonatype JIRA
或者看一看其他人的
Android Gradle7.0上传Library到maven仓库_光临天下的博客-CSDN博客_gradle 上传文件
和
Android手把手,发布开源组件至 MavenCentral仓库_许进进的博客-CSDN博客
这两篇文章帮了我很多,感谢大佬
5.准备gpg签名,链接同上,都能找到
Gpg4win - Get Gpg4win 去下载Gpg4win
我的是这样的
要勾选使用密码句才会生成我们需要的密钥
生成后记得保留后八位数字,后面要用
选择在服务器上发布
不放心的朋友可以去 keys.openpgp.org 查一查,前面转的链接也有图,我就不详细说了
上传成功后选择备份私钥,导出...选项导的是公钥
导出的时候记得看后缀,我们要的是gpg,其他格式不要
6.准备本地的gradle.properties
这里要注意,不是我们项目里面的gradle.properties,是在C:\Users\用户\.gradle文件夹下的gradle.properties,如果没找到可以自己新建一个,在这个gradle.properties里面我们需要填一些资料
# MavenCentral
signing.keyId=私钥后9位
signing.password=创建私钥时填写的密码
signing.secretKeyRingFile=私钥的绝对路劲,记得把\改成\\,不然studio提示你\uxxxx
mavenCentralUsername=Sonatype账号名
mavenCentralPassword=Sonatype账号密码
7.准备maven publish插件
我前面发的两个大佬的链接,到我搞这一步的时候总是失败(要自己写gradle文件,有兴趣的朋友可以试试),那没辙了,换吧
找了一下,有个大佬写了插件,不用我们自己去写gradle文件,照着大佬的教程走就好了,这里我给大家精简一下,直接上图
这个是项目的build.gradle配置
这个是我们要抽取aar的library的
这个是我直接照搬的settings.gradle里面的内容,就那三个仓库,全部都是https://s01.oss.sonatype.org开头的,我也不知道具体需要哪个还是三个都要,大家看着来吧
8.准备项目的gradle.properties
除了我们电脑里面的gradle.properties,项目里面的gradle.properties也有东西要配置,这个就是我的配置,大家看着填吧
# 服务器地址 maven center SONATYPE_HOST=S01 # 发布 release 组件时是否签名 RELEASE_SIGNING_ENABLED=true VERSION_NAME = 0.0.5 POM_ARTIFACT_ID = FactorsSDK POM_NAME = TestModSDK POM_DESCRIPTION = 描述 POM_PACKAGING = aar GROUP=创建账号时的groupid POM_INCEPTION_YEAR=2022 # 主页 POM_URL=https://github.com # Licenses 信息 POM_LICENSE_NAME=The Apache Software License, Version 2.0 POM_LICENSE_URL=https://www.apache.org/licenses/LICENSE-2.0.txt POM_LICENSE_DIST=repo # 版本控制信息 POM_SCM_URL=https://github.com/ POM_SCM_CONNECTION=scm:git:git://github.com/.git POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/.git # 开发者信息 POM_DEVELOPER_ID=nameid POM_DEVELOPER_NAME=name POM_DEVELOPER_URL=https://github.com/
9.准备上传到仓库
准备工作做好以后我们就该上传代码了,这边建议大家先在本地上查看一下pom文件
这个生成一个pom文件
这个文件可以查看我们自己的配置全不全,不过有填漏的记得补上,不然等你提交的时候各种报漏不给过,浪费你时间,附带一提,如果pom文件里面没有你在项目的gradle.properties填的信息,可以在本地的gradle.properties里面填,格式是一样的,我搞这个的时候我的描述就是非要卸载本地的gradle.properties才能写进pom文件
10.上传
还是这里上传 ,对照下面来决定你要用哪个吧
generateMetadataFileFoxxxPublication:生成组件配置数据,会在 build/publications/$xxx/里面,一般比较少用。
generatePomFileForxxxPublication:生成pom文件,在build/publications/$xxx/里面,一般比较少用。
publish:遍历所有发布器,发布到所有的仓库,不包括本地仓库。
publishAllPublicationsToxxxRepository:遍历所有发布器,发布到对应的仓库,这里是发布到release仓库里面。
publishxxxPublicationToMavenLocal:将xxx发布器,发布到本地仓库,这里的发布器的mavenJava/release
publishxxxPublicationToxxxRepository:将xxx发布器,发布到xxx仓库,这里的发布器的mavenJava/release,仓库是relase仓库
publishToMavenLocal:遍历所有发布器,发布到本地仓库。
11.检查上传效果
跳转链接Nexus Repository Manager,点击右上角的log in,填上之前申请的 Sonatype账号和密码
然后选择
后面因为我项目上传成功了,刷新后就没内容,没法截图了
在现在empty selection的地方会出现三个选项卡
summary,activity和content,其他先不谈,content就是你上传的东西,确认没有问题后就可以点击close后写描述,接着上传
等待几分钟后在activity选项卡那里你可以看到结果,如果前面的准备没有缺漏,那么你就可以直接点上面的release,把内容传到Maven Central 仓库了
当上传成功的时候,Sonatype会发一条信息给你,注意看你申请Sonatype账号时填的邮箱,但更新到https://search.maven.org可能需要长达几个小时。
跳转链接 Maven Central Repository Search 可以查看