建议收藏,从 jCenter 迁移到 MavenCentral 完整方案

发布到 Maven Central 相关的教程挺多的,但是大部分存在问题。这篇文章是我在解决了很多问题的基础之上总结的,用来帮助需要的同学避免重蹈覆彻。需要的可收藏,万一用到了呢~

1、Farewell to Bintray jCenter

首先,告别下 bintray jcenter. 相比于 Maven Central,bintray jcenter 的性能和方便性确实好得多。可惜,jcenter 将要关闭了。jcenter 还是给我提供了很多的便利,对于其关闭深表可惜:

bintray

2、发布到 Maven Central

Step 1: 注册和激活 sonatype

发布到 Maven Central 之前,首先要到 sonatype 注册一个账号,

https://issues.sonatype.org/

注册账号完账号之后需要通过创建 issue 激活账号,页面如下:

激活

这里有几个需要注意的地方:

  1. 项目选择 Community Support - Open Source Project Repository Hosting
  2. 问题类型选择 New Project
  3. 概要:描述项目功能,不重要
  4. Group Id 比较重要,我们后续说明
  5. Project URL 填写自己开源项目地址即可,要与 Group Id 有一定的关联性
  6. SCM url 版本仓库的拉取地址,填写自己的项目的 git 链接地址,通常是项目地址后加 .git

对于这里的 group id,它就是发布完成之后,引用时的 group id. 你可以使用自己的域名,但是需要证明域名是你自己的。如果没用自己的域名,一个简单而通用的方式是使用 Github 的地址,比如我的 GitHub 地址是 https://github.com/Shouheng88 ,就可以写作 com.github.Shouheng88. 创建完 issue 之后几分钟内就会收到对方发送的邮件,邮件内会提示通过在 Github 里面创建项目来验证激活:

QQ截图20210414231719.png

当我们按照邮件说明创建完项目之后,修改问题状态,过几分钟之后就激活成功了。

Step 2: 申请密钥

为了确保中央存储库中可用组件的质量水平,OSSRH 对提交的文件有明确的要求。除了 jar 包和 pom 文件,Javadoc 和 Sources 是必须的(这点和 bintray jcenter 类似),并且每个文件都要有一个对应的 asc 文件,即 GPG 签名文件,用于校验文件。所以,这步骤中我们需要申请密钥。

OSX 下面可以使用 brew 安装,

$ brew update
$ brew install -v gpg

Windows 下面也可以直接下载安装,

https://www.gpg4win.org/get-gpg4win.html

安装完毕之后,可以通过如下指令生成密钥:

gpg --generate-key

创建密钥的过程中会要求输入密码,这里的密码非常重要,我们发布的时候会使用到它。

创建完毕之后可以通过 gpg -k 显示所有已创建的密钥:

显示密钥

这里的字符串 AB7FxxxxxxxxxxxxABA846D44F7B66 叫做密钥指纹。后面 8 位 D44F7B66,叫做 KEY ID,我们发布的时候将使用到它。

另外,进行文件签名的时候需要用到名为 secretKeyRingFile 的文件,我们可以通过如下命令生成:

gpg --export-secret-keys [密钥指纹] > secret.gpg

在 sonatype 的仓库提交后,需要从多个公钥服务器上下载匹配的公钥,然后来校验你上传的文件的签名。所以,我们需要通过下面的命令上传公钥到公钥服务器:

gpg --keyserver keyserver.ubuntu.com --send-keys [密钥指纹]

Step 3: 准备发布脚本

首先需要引入两个插件,

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

然后编写发布的 gralde 脚本如下

task androidSourcesJar(type: Jar) {
   
    archiveClassifier.set("sources")
    from android.sourceSets.main.java.source
    exclude "**/R.class"
    exclude "**/BuildConfig.class"
}

publishing {
   
    publications {
   
        mavenJava(MavenPublication) {
   
            // group id,发布后引用的依赖的 group id
            groupId 'com.github.Shouheng88'
            // 发布后引用的依赖的 artifact id
            artifactId 'sil'
            // 发布的版本
            version '0.1.0'
            // 发布的 arr 的文件和源码文件
            artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
            artifact androidSourcesJar
            pom {
   
                // 构件名称,可以自定义
                name = 'uix-common'
                // 构件描述
                description = 'Android UIX'
                // 构件主页
                url = 'https://github.com/Shouheng88/Android-uix
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值