idea maven打jar包_Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库
摘要
Maven 中央仓库并不支持直接上传 jar 包,因此需要将 jar 包发布到一些指定的第三方 Maven 仓库,比如:Sonatype OSSRH 仓库,然后该仓库再将 jar 包同步到 Maven ,本文详细记录整个发布、同步过程。
注册一个 Sonatype 用户
进入地址:https://issues.sonatype.org/secure/Signup!default.jspa 注册 Sonatype 用户,Sonatype 通过 JIRA(JIRA 是 Atlassian 公司出品的项目与事务跟踪工具)来管理 OSSRH 仓库。
创建一个发布构件的 issue
提交「构件发布申请」的第一步是在 JIRA Dashboard上创建一个 issue。如下所示,点击 Create
按钮:
会弹出一个对话框让你填写 issue 的详细信息,这里最重要的就是 Group Id,一般会带上域名,千万别弄错了,这关系到以后发布其它的构件。我们这里是com.vesoft
。
Sonatype 有域名验证,验证方式:
往你的 DNS 中添加 JIRA 编号记录
重定向到你的 Github 主页
如果你没有域名,可参考这个链接:http://central.sonatype.org/pages/choosing-your-coordinates.html 的方法进行操作
选择一个带有项目托管信息的 GroupId,例如 io.github.facebook 或 com.github.facebook
另外一种推荐的方式是使用免费的 free managed security reporting service
- 将 https://hackerone.com/central-security-project/reports/new 作为你项目的安全信息保障 url,剩下的事情 Sonatype 工作人员会自行搞定。
等待 issue 审核通过
审核因为时差原因需要一定时间,审核通过后会收到邮件通知,同时在对应 issue 下会看到 Sonatype 工作人员的回复,一般是添加一个 comment,内容大致如下:
Configuration has been prepared, now you can:
Deploy snapshot artifacts into repository https://oss.sonatype.org/content/repositories/snapshots
Deploy release artifacts into the staging repository https://oss.sonatype.org/service/local/staging/ deploy/maven2
Promote staged artifacts into repository 'Releases'
Download snapshot and release artifacts from group https://oss.sonatype.org/content/groups/public
Download snapshot, release and staged artifacts from staging group https://oss.sonatype.org/content/groups/staging
please comment>
使用 GPG 生成密钥对
生成密钥对
会让选择加密方式:
RSA and RSA (default)
DSA and Elgamal
DSA (sign>默认选第一个,选择之后,需输入用户名和邮箱,和 Passphase——相当于密钥库密码。
默认选第一个,选择之后,需输入用户名和邮箱,和 Passphase——相当于密钥库密码。
查看密钥
这里的公钥 ID 是 xxxx,马上就会用到了。
将公钥上传到 PGP 密钥服务器
查看公钥是否上传成功
NOTE:
根据实际填写此处的公钥 ID
很多网上教程给的是 pool.sks-keyservers.net,个人感觉 pool.sks-keyservers.net 这个 keyserver 不好用,上传了 key,经常会验证失败,也获取失败,maven 支持两个 key servers http://keys.gnupg.net:11371 和 http://pool.sks-keyservers.net:11371
此处采用 hkp 协议而不是 http 协议
很多教程没有给端口,经试验,需加上端口号
本地的私钥用来对上传的构件进行数字签名,而下载该构件的用户可通过上传的公钥来验证签名--需验证这个构件是否由本人上传的,因为存在构件被篡改的可能。
修改 Maven 配置文件
修改 Maven 配置文件主要是需要修改 setting.xml 和项目的 pom.xml 文件
配置 Maven 的 setting.xml
修改 ~/.m2/setting.xml
文件
替换 USER_NAME
, YOUR_PASSWORD
为 Sonatype 上面注册的用户名和密码, 这里的 ID 会在 pom.xml
里面使用到。
配置 Maven 的 pom.xml
pom.xml 中必须包括:
name
、description
、url
、licenses
、developers
、scm
等基本信息 (血泪史之踩过的坑)发布 maven 除了 jar 必须还有文档包和源码包。因此 pom 需添加
maven-javadoc-plugin
和maven-source-plugin
。参考示例:
发布构建需要秘钥加密,因此 pom 需添加
maven-gpg-plugin
(血泪史之踩过的坑)
多模块项目配置
nebula-java 是多模块项目
为了上传 Client,需要上传 parent 的 pom.xml,否则 Client 会找不到依赖(血泪史之踩过的坑),但我们又不希望上传 examples 模块,故做了如下改动:
项目信息
name
、description
、url
、licenses
、developers
、scm
等信息和maven-gpg-plugin
放在 parent 的 pom.xml 文件中
在 Java Client 的 pom.xml 中添加
maven-javadoc-plugin
、maven-source-plugin
和maven-deploy-plugin
在 example 模块的 pom.xml 中声明 skip deploy
Q: 为什么 maven-gpg-plugin
放在 parent 的 pom.xm l中,而 maven-javadoc-plugin
,maven-source-plugin
插件放在 Client 的 pom.xml 中
A: 因为上传的所有构件都需要加密,包括 parent 的 pom.xml,因此放在 parent 中;而只有 Client 需要上传 javadoc,source,因此 maven-javadoc-plugin
,maven-source-plugin
插件放在 Client 中。
上传构件到 OSS 中
在 nebula-java/ 目录下运行:
NOTE:不加 -DpomFile ,上传的文件中会没有 parent 的 pom.xml (又是一部血泪史)
在 OSS 中发布构件
使用 Sonatype 账号登录 https://oss.sonatype.org/#stagingRepositories,可在 Staging Repositories 中查看已上传的构件,这些构件目前是放在 Staging 仓库中,可进行模糊查询,定位到刚上传的构件。
此时,该构件的状态为 Open
,勾选它,然后点击 Close
按钮。系统会自动验证该构件是否满足指定要求 (幸福的人只有一种,不幸的人各有各的不幸,可能会遇到各种各样的不符合要求,Good luck!ヾ(◍°∇°◍)ノ゙)当验证完毕后,状态会变为 Closed
。
最后,点击 Release
按钮来发布该构件
页面可能要刷新一下才能看到最新的状态。
通知 Sonatype 构件已成功发布
在前面 JIRA 的 issue 下面回复一条“构件已成功发布”的评论,通知 Sonatype 的工作人员为要发布的构件做审批,发布后会关闭该 issue。
等待构件审批通过
然后,等待。。。
从中央仓库中搜索构件
大概十多分钟后,可以在这里 https://repo1.maven.org/maven2 找到刚刚发布的构件,可以直接在 pom.xml 中使用啦~~ ??
等同步完成大约 2 个小时,中央仓库(链接:http://search.maven.org/)就可以搜到啦。
国内很多使用的是阿里云的镜像,镜像同步不是实时同步。为了及时使用,可以添加中央仓库镜像源,在 ~/.m2/setting.xml
文件添加,如下:
第一次成功发布之后,以后就不用这么麻烦了,可以直接使用 Group Id 发布构件。
后续操作
之后同一个 Group Id 的发布流程
按照上文编辑 setting.xml 和 pom.xml,
上传构建;
在 https://oss.sonatype.org/ close 并 release 构件;
等待同步完成(大约 2 小时)后,就可以使用了
最后温馨提示:发布的版本不支持修改,或者删除
星云·小剧场
为什么给图数据库取名 Nebula ?
Nebula 是星云的意思,很大嘛,也是漫威宇宙里面漂亮的星云小姐姐。对了,Nebula的发音是:[ˈnɛbjələ]
本文星云图讲解--《阿尔普 188 和蝌蚪的尾巴》
为什么这个星系有这么长的尾巴?
在这张令人惊叹的远景图中,根据哈勃遗留档案的图像数据,遥远的星系形成了一个引人注目的背景,这是被破坏的螺旋星系 Arp188,蝌蚪星系。
宇宙蝌蚪距离北方的龙星座(天龙座)只有 4.2 亿光年。它引人注目的尾巴大约有 28 万光年长,以巨大、明亮的蓝色星团为特征。有一个故事是这样说的:一个更致密的闯入星系从 Arp 188 前穿过——从右到左——被它们的引力甩在蝌蚪后面。在这次近距离接触中,潮汐力将螺旋星系的恒星、气体和尘埃拉出,形成了壮观的尾巴。闯入者星系本身,估计位于蝌蚪后面 30 万光年处,可以通过右上角的前景螺旋臂看到。与地球同名的蝌蚪星系很可能会随着年龄的增长而失去尾巴,尾巴上的星团形成了大螺旋星系的小卫星。
资料来源 | Hubble Legacy Archive, ESA, NASA;
图片来源 | Astronomy Picture of the Day | 2018 December 11
最后是 Nebula 的 GitHub 地址,欢迎大家试用,有什么问题可以向我们提 issue。GitHub 地址:https://github.com/vesoft-inc/nebula 或戳「
idea maven打jar包_Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库相关推荐
- Maven发布封装到中央仓库时候报错:no default secret key: No secret key
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 今天因为发布swagger-spring-boot-st ...
- maven安装异常 Failure to find xxx in 中央仓库
当maven环境重新编译安装的时候,程序引用了第三方或内部人员编写的jar包依赖,可能会出现 Failure to find xxx in 中央仓库 错误,下面将通过 maven 命令本地安装jar包 ...
- maven中央仓库,其他公共库
5.1 中央仓库 由于原始的本地仓库是空的,maven必须知道至少一个可用的远程仓库,才能执行maven命令的时候下载到需要的构件.中央仓库就是这样一个默认的远程仓库. maven-model-bui ...
- Maven中央仓库地址大全,Maven中央仓库配置示例
< Maven 中央仓库地址大全 > 在上一篇文章中完成了 < Maven镜像地址大全 >,后来又花了时间又去收集并整理了关于 maven 远程仓库地址,并整理于此,关于 Ma ...
- maven常用中央仓库
阿里云小仓库 https://maven.aliyun.com/mvn/guide https://www.jb51.net/article/189796.htm https://segmentfau ...
- Maven 中央仓库地址大全
1. http://www.sonatype.org/nexus/ 2. http://mvnrepository.com/ (本人推荐仓库) 3. http://repo1.maven.org/ma ...
- Maven中央仓库地址大全
一.一般使用Maven中央仓库地址 1. http://www.sonatype.org/nexus/ 2. http://mvnrepository.com/ (本人推荐仓库) 3. http:// ...
- 最全的Maven中央仓库地址大全
#史上Maven 中央仓库地址大全 1.阿里中央仓库(首推1) <repository><id>alimaven</id><name>aliyun ma ...
- Maven中央仓库地址配置大全
第一种:直接在项目的 pom.xml 文件中进行修改(不推荐,尤其是在多人协助的开发过程中非常的费事费力): 第二种:将 Maven 的远程仓库统一的配置到 Maven 的 Settings.xml ...
最新文章
- 2021年春季学期-信号与系统-第五次作业参考答案-第九小题
- Java多线程分析案例
- if you can not get the full version within 1 minute
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1041:奇偶数判断
- ios swift版 sqlite3详解
- BDTC 2017 | 中国大数据技术大会全日程和演讲者曝光
- vue中既可以选择又可以手动输入的文本框类型_在PPT中制作一个胖乎乎的可爱圆环图...
- 网站生成静态页面,及网站数据采集的攻、防原理和策略
- Android APK代码混淆与资源混淆详解,你确定不看?
- 华为手机热点无法连接_华为手机开热点,连不上怎么破
- jxls对比_结合JXLS和POI技术开发Web报表
- matlab正弦函数傅里叶变换,正弦函数及其傅里叶变换(一)
- 第十一届“蓝狐网络杯”湖南省大学生计算机程序设计竞赛 B - 大还是小? 字符串水题...
- 【场景方案】捋一捋Vben Admin之登陆方案(学习记录)
- LINUX从零开始——ENGINEER(云计算应用管理)——Day3 [逻辑卷管理、RAID磁盘阵列、进程管理]
- 亚马逊SP-API自发货标记发货对接
- java 佛祖保佑_佛祖保佑,永无bug
- Win7下安装Mysql5.7.26
- VC++域名转IP(网络直接连接域名)
- java循环例题while型_Java基础--while、do-while、for循环结构(附例题)