一、创建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 这样仓库中文件夹的结构就是