Maven | 【笔记】从建库到发布

前言

一套通用代码,经历过多少次复制粘贴,才懂得建立版本发布到中央库?

正文

内容概要:

替代方案: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 中操作:

  1. 检查 git 路径:
  1. 依次点击 VCS | Enable Version Control Intergration
  1. 下拉框选择 git
  1. 初始化成功,项目未暂存(红色):
  1. 继续,依次点击 VCS | Git | Add
  1. 添加成功,项目已暂存(绿色):
  1. 提交第一版:
  1. 写上本次 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 中的相关内容。

解释一下对项目结构的调整,在根目录下有一个 pom.xml 文件,作为顶级目录配置,它可以统一设定项目的各种参数。根目录下还有对应的 maven 模块,比如核心库 helper,比如样例库 samples。核心库是项目的主要内容;样例库下还有根据不同功能,划分的不同结构,比如 datetimerandom、等等。具体内容参见:helper-pom

另外,需要对本机安装的 mavensettings 做一下配置:

<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 密码,就是你在创建时设置的安全密码。

  • 尝试发布测试版本
    将项目配置改为 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 中编写、提交、推送,然后在命令行中发布即可。

真是非常有意思的一次体验。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容