前言
一套通用代码,经历过多少次复制粘贴,才懂得建立版本发布到中央库?
正文
内容概要:
- 建立 maven 项目
- 开源到 github 网站
- 发布 mvnrepository 中央库
- 测试依赖
替代方案:https://jitpack.io/(适合临时使用)。
一、建立项目(可跳过)
通用代码,包含一系列辅助类,我称之为 helper
。
- 依次操作
File | New | Project...
:
- 界面左边侧栏中,选择
Maven
选项:
- 界面右边面板中,检查
JDK
版本,根据需要选择archetype
项目模板:
-
Next
,填写项目信息:
提示:GroupId
即群组 ID,一般使用个人/企业域名,或者个人 github 主页。
-
Next
,建立项目路径:
-
OK
,编写Hello World
:
温馨提示:应该拷贝通用代码到此项目,以上作为示例而简单化。
二、开源项目(可跳过)
现在 helper
是一块敲门砖,让我们得以进入欢乐无比的开源世界。
初始化仓库
为了确保 git 安装无误,我们打开命令行,输入 git --version
,显示如下:
第一种方式
在命令行中依次执行:
// step 1 初始化仓库
git init
// step 2 暂存文件
git add .
// step 3 提交暂存
git commit -m "初始化 基本项目"
第二种方式
在 IntelliJ IDEA 中操作:
- 检查 git 路径:
- 依次点击
VCS | Enable Version Control Intergration
:
- 下拉框选择
git
:
- 初始化成功,项目未暂存(红色):
- 继续,依次点击
VCS | Git | Add
:
- 添加成功,项目已暂存(绿色):
- 提交第一版:
- 写上本次
Commit
消息:
第 1 步只需要配置一次,第 2-8 步初始化时做一次,经常执行的操作是第 5、7、8 步。
忽略不需要的文件(可选)
有时候 IDE
会自动编译源文件,导致产生许多不必要的项目垃圾;有时候一些日志文件,并不需要提交到仓库;还有时候你希望本地保留一些临时配置文件,以建立调试环境。
在这些情况下,你需要建立忽略机制:
- 新建
.gitignore
文件:
- 已暂存的文件通过
Revert
恢复原样:
- 确认恢复后,执行提交:
分享到 github
快乐如果分享,那便一生二,二生三,三生万物。
提示:你必须申请一个 github 账号,并在 IDEA 设置中配置好它。
- 配置账号:
- 一键分享:
- 输入仓库信息:
- 分享成功:
- 点击查看项目主页:
三、发布项目
请知悉,本次发布流程参考:OSSRH Guide。
创建工单
指南首先要求创建一个 Sonatype 工单,如果你已建立过一个顶级 groupId
的工单,请跳过这部分内容。
填写工单:
Group Id
填写顶级的即可,后续除非完全不一样,否则不需要再添加。
Username(s)
可以不填,据说是填写介绍人的意思。
注意:建立完工单后,会有一个审核时间,最长是 2 天,通常美国工作时间几分钟就通过。至于 为什么要审核,指南中有提到,可以去了解一下。
部署配置
配置文件参数仿照:okhttp,其他方式请参考 OSSRH Guide 中的相关内容。
- 配置 maven
解释一下对项目结构的调整,在根目录下有一个 pom.xml
文件,作为顶级目录配置,它可以统一设定项目的各种参数。根目录下还有对应的 maven 模块,比如核心库 helper
,比如样例库 samples
。核心库是项目的主要内容;样例库下还有根据不同功能,划分的不同结构,比如 datetime
、random
、等等。具体内容参见:helper-pom。
另外,需要对本机安装的 maven 中 settings
做一下配置:
<settings>
<servers>
<server>
<id>ossrh</id>
<username>your-jira-id</username>
<password>your-jira-pwd</password>
</server>
</servers>
</settings>
- 生成秘钥对
sudo apt-get install gnupg
gpg --gen-key
注意:我用的是 Windows 10
系统中的 WSL 来执行以上过程。不希望安装内置版本,从 gnupg 下载源文件并编译安装。
第一步,选择秘钥算法:
第二步,选择秘钥位数:
第三步,选择过期时间:
第四步,提供姓名、邮箱、注释以及安全密码:
第五步,等待生成秘钥:
第六步,查看秘钥 gpg --list-keys
:
第七步,上传公钥 gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 4C0D8C9F
:
发布版本
最好使用快照版本尝试一下,等第一版开发结束,再进行稳定版本发布。
- 安装 maven 并 运行
mvn clean deploy -P sonatype-oss-release
命令
注意:中途可能需要你输入 GPG 密码,就是你在创建时设置的安全密码。
- 检查快照版本状态
可在 https://oss.sonatype.org/content/repositories/snapshots/ 中查看:
- 尝试发布测试版本
将项目配置改为1.0-beta
试试:
随后运行 maven 命令:
部署成功:
从 https://oss.sonatype.org/#stagingRepositories 查看版本:
点击 Close
并输入说明(通常是 jar
包的介绍):
等待状态变为 closed
,然后 Release
,再搜索一下:
注意:通常搜索 mvnrepository 需要等候几个小时,但我们可以尝试获取依赖。
如需自动化发布,参考 https://central.sonatype.org/pages/apache-maven.html:
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
测试依赖
新建基于 maven 的简单工程并加入 helper
的依赖:
<dependency>
<groupId>com.github.mrzhqiang.helper</groupId>
<artifactId>helper</artifactId>
<version>1.0-beta</version>
</dependency>
依赖失败(可能要等几个小时之后再试):
依赖成功(注意,同步比较慢,可以考虑替代方案 https://jitpack.io/):
mvnrepository 搜索到:
总结
看似麻烦的发布流程,实际上【工单】、【maven 配置】、【秘钥】这些都只是第一次才需要设置,【项目】和【开源】也仅仅是创建项目时麻烦一点,之后只需要在 IDEA 中编写、提交、推送,然后在命令行中发布即可。
真是非常有意思的一次体验。