发布Android Github的项目库至Maven central教程

一、创建JIRA 帐户

        需要到:https://issues.sonatype.org/secure/Dashboard.jspa 去创建注册JIRA的账号

        之后进行登陆,创建一个Issues问题去创建仓库地址,点击最顶部的以下按钮去创建

 之后出现以下页面

项目:选择Community Support - Open Source Project Repository Hosting
(OSSRH)
问题类型:选择New Project
概要:不知道写什么可以随便填
Group Id:如果你有域名可以使用自己的域名或子域名,如果没域名有github账号也可以,例:io.github.github的账号名,注意不要以com开头而是io开头
Project URL:填写该项目的Github地址
SCM url:只需要在上面的Github地址后面加上.git后缀即可 

        填完之后确定即可等待结果了,如果你的域名不符合要求会驳回你的工单,按照要求做好即可。

        如果你使用的是github的域名,那么他的回复可能是这样的

        第一个红框标出的就是他给你的建议域名也就是Group Id,下边红框意思是让你去你的github上创建一个他给你的项目名称的空项目,创建好这个空项目之后重新编辑一下这个工单,把Group Id改为他建议的这个,然后保存,保存之后在编辑这一栏有一个好像是叫Response的按钮一定记得点一下,因为他的回复中让你把问题状态改为Open,只有点一下才会变成Open

         之后就等着出结果吧,出现以下回复说明完事了

        说明一点:Group Id做好之后可以多个项目使用,只需要每个项目名称设置不一样就可以了,相当于在他的仓库里创建了一个名为Group Id的文件夹,你在这个文件夹里可以创建不同的文件夹(即不同的项目名称),这个之后会聊到这个先不赘述了

二、生成密钥(以Mac电脑为例)

        想要向Maven central仓库存储你的库需要安装gpg来签名用以验证身份

        首先需要安装brew(如果已安装请忽略此步),去这里看安装命令https://brew.sh/index_zh-cn

        如果连接不上,可以使用国内镜像安装,使用终端:

/bin/bash -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

        安装这个时间比较长,等着吧~~~

        安装完然后brew 就可以使用其命令安装gpg了,照样使用终端,输入以下命令安装:

brew install gpg

        这个过程也是时间比较长,接着等吧~~~

        安装这个目的就是要生成密钥,这样才能在你的仓库里传代码,所以有这样一个配置,这里不赘述了,接下来会提到以下3个值从哪获取到

# signing information
signing.keyId=key
signing.password=password
signing.secretKeyRingFile=file path

        安装之后,使用gpg命令来生成密钥:

gpg --full-gen-key

        之后会让你选择哪一种密钥,输入1回车,之后密钥长度和有效期限可以不用管直接回车

        再之后会让输入一些信息,按需填写即可,最后填完之后会让输入密码,这个密码就是上文提到的signing.password 的值,然后会出现如下的信息,红框标出部分的后8位就是上文提到的signing.keyId 

        那么还差一个signing.secretKeyRingFile,接着在终端输入 

cd ~/.gnupg/ && gpg --export-secret-keys -o secretKeyRingFile.gpg

        最后的secretKeyRingFile.gpg是生成的文件名,可以自定义一个名字

        之后会在你的个人工作目录下的  .gnupg 生成这个文件可前往

         然后看到

         signing.secretKeyRingFile的值就是上边文件的绝对路径,到这里准备工作终于做完了。

         这一步不是必需的,但是建议走一下这个命令使其立即生效,注意最后的signing.keyId换成你自己的,如果不做的话下边发布项目时点击close时可能会失败

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys signing.keyId

三、配置项目

        进入开发阶段,可以先去这里看一下,https://central.sonatype.org/publish/publish-gradle/#metadata-definition-and-upload

        为方便大家开发,直接把模版代码给贴出来吧,在你的库所在module的build.gradle 添加以下代码,或者自己写一个.gradle文件,在你的所在module的build.gradle引用即可

apply plugin: 'maven'
apply plugin: 'signing'

task sourcesJar(type: Jar) {
    classifier = 'sources'
    from android.sourceSets.main.java.srcDirs
}

artifacts {
    archives sourcesJar
}

signing {
    sign configurations.archives
}

group = PROJ_GROUP
version = PROJ_VERSION

uploadArchives {
    repositories {
        mavenDeployer {
            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

            repository(url: "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") {
                authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            snapshotRepository(url: "https://s01.oss.sonatype.org/content/repositories/snapshots/") {
                authentication(userName: ossrhUsername, password: ossrhPassword)
            }

            pom.project {
                name PROJ_BASENAME
                artifactId PROJ_NAME
                packaging 'aar'
                description PROJ_DESCRIPTION
                url PROJ_WEBSITEURL

                scm {
                    connection PROJ_VCSURL
                    developerConnection PROJ_VCSURL
                    url PROJ_WEBSITEURL
                }

                licenses {
                    license {
                        name 'The Apache License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }

                developers {
                    developer {
                        id DEVELOPER_ID
                        name DEVELOPER_NAME
                        email DEVELOPER_EMAIL
                    }
                }
            }
        }
    }
}

        上边代码中的几乎所有参数我都摘出来放在外边进行配置了,下边会讲解每个配置项,然后同级目录下创建一个gradle.properties的文件,如下所示:

        然后打开它填写,之所以这么做的好处是如果你一个库有多个module的话,这么做就可以通用了,只需要在每个module下的gradle.properties填写对应的名字

PROJ_NAME=库的名字,自行修改

         最后在项目根目录的gradle.properties填写

PROJ_GROUP= Group Id
PROJ_BASENAME= 项目名称
PROJ_VERSION= 版本号
PROJ_WEBSITEURL= 项目的github地址
PROJ_VCSURL= 项目的github地址.git
PROJ_DESCRIPTION= 关于项目的介绍

DEVELOPER_ID= 可以跟下边 DEVELOPER_NAME 填写一样的
DEVELOPER_NAME= 第一步中注册JIRA的账号
DEVELOPER_EMAIL= 第一步中注册JIRA所用的邮箱

signing.keyId= 上边提到的
signing.password= 上边提到的
signing.secretKeyRingFile= 上边提到的

ossrhUsername= 第一步中注册JIRA的账号
ossrhPassword= 第一步中注册JIRA的密码

        到这就配置好了但是这里包含了太多敏感信息,不方便提交到Github上去是不是,主要是最后5行,其实这段可以单独抽离出来,放到本地

        前往文件夹 ~/.gradle/,这块的gradle.properties是所有项目共用的

 

        打开 gradle.properties然后把最后5行写这里,然后记得把项目根目录下的删除掉

         这样的话就不会提交到github上了,并且多个项目之间可以共用它

四、发布项目

        配置好项目之后,可以在项目的Terminal中执行./gradlew uploadArchives 命令,也可以在如图所示位置双击即可

         完成后Android studio 会有如下信息显示,即代表成功 

        然后前往https://s01.oss.sonatype.org/#welcome去查看,这里进来后进行登录

         账号密码就是第一步中的,然后点击左侧Staging Repositories按钮

        然后点击刷新,会出现刚才提交的代码 

        勾选,点击close,然后需要等待一会,期间可以点击Refresh刷新,直到Release按钮可以点击

         可以看下下边的状态是以下情况就说明成功了

        点击Refresh刷新,Release按钮可以点击后代表可以发布到maven central公共仓库了,点击发布即可。

        

 

        等待一会,你最开始注册的邮箱收到这样一个邮件,代表发布成功了

        https://repo1.maven.org/maven2/ 30分钟之后可以在里面找到自己的库 

        https://search.maven.org 四个小时之后可以在里面找到自己的库   

        可以这样测试一下

        https://repo1.maven.org/maven2/你的group id,group id的 . 替换为 /   如果跳转成功你就看到你的库了

五、配置多module项目

        上边也提到了一个Group Id可以共用多个项目,其实原理就像github上你有多个项目,例如我有下边两个项目:

https://github.com/FlyJingFish/OpenImage

https://github.com/FlyJingFish/ShapeImageView

        在仓库中就是这个结构

        那其实Group Id 就是 io.github.FlyJingFish,后边跟的就是各个项目的名称,所以第一步中其实做一次Group Id就够了,无需每个项目做一次,只需要每个项目的名称不一样就行了。

        那有人问了,如果一个项目由多个module咋整呢,只需要在填写Group Id时点一下总名称就好了(即 io.github.FlyJingFish.OpenImage ) 

        例如我的OpenImage这个项目有多个module ,那这个项目的上边提到的PROJ_GROUP 也就是填写Group Id的地方写 io.github.FlyJingFish.OpenImage 这样仓库中文件夹的结构就是

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值