手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02

技术手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02 手把手教你提交Jar包到Maven公共仓库 | 萌新写开源02本文,就整理一下我把项目上传到公共Maven仓库的过程,当做一篇教程文章

教你提交Jar包到Maven公共仓库|孟新写开源02
在本文中,我将整理项目上传到公共Maven仓库的过程,作为教程文章。
在上一篇文章中,我介绍了我自己的SpringBoot Starter项目,它允许我们通过注释轻松地获取操作日志,并将其推送到指定的数据源。
之前,我的项目是在Github上开源的。如果你想使用我的项目,你必须把Github仓库配置成Maven的Setting.xml,一点也不方便。.
本文,就整理一下我把项目上传到公共Maven仓库的过程,当做一篇教程文章。
不得不说,上传公共Maven仓库还是挺难的,差点没把人气死。.
《萌新学开源》 系列文章持续更新:
《萌新写开源01》如何用注释优雅地记录操作日志
《萌新写开源02》如何向Maven公共仓库提交项目(本文)
03010如何编写从0到1的SpringBoot Starter
《萌新写开源》如何让你的评论支持重复评论?
码字不易,请注意!微信官方账号:后端技术漫谈,全网博客名称:满圣江岛。

总体流程

网上有很多文章,主要有以下几个步骤:
以sonatype提交问题
配置gpg密钥
配置pom.xml和setting.xml
mvn干净部署
你一定要问,sonatype和大众Maven仓库是什么关系?为什么需要在sonatype操作?
Maven中央仓库不支持直接发布jar包。我们需要将jar包发布到一些指定的第三方Maven仓库,然后这些仓库将jar包同步到Maven中心仓库。其中,最简单的方法就是通过Sonatype OSSRH仓库发布jar包。接下来,我将向您展示如何将jar包发布到Sonatype OSSRH。
另外,我想重申一下,所有的在线教程都是有时效性的,包括这篇文章(这篇文章写于2021年12月)。所以最好的办法就是按照官网的文档,用在线教程解决问题,因为官网的文档永远是最新并且最优的解决方案,直接照着博客教程去做有可能会走很多弯路。.
官网文档地址:(这是你最应该看的文档没有之一)
https://central.sonatype.org/publish/publish-maven/
好了,我们按照上面的官方文件一步一步来。

在sonatype提交工单

第一步,首先你需要在sonatype网站注册你的账号:
https://issues.sonatype.org/secure/Signup!default.jspa
创建后,登录并单击页面顶部的“新建”提交新问题。
下图是我创建时填写的,供大家参考。
有几个要点需要注意:
问题的名称,只要能表达清楚就行。
GroupId应该写得准确。
项目网址填写Github仓库地址
SCM url在Github仓库地址后需要git后缀。
提交后以为是人工审核,其实是全自动机器人自动回复你。它要求你证明你拥有groupId网站的所有权。例如,如果我填写cn.monitor4all,那么我会在monitor4all.cn的网站上添加一个TXT解析,指向这个问题(值写成OSSRH-xxxxx

).

如果您的groupId是com.github.xxx,则不需要执行上述步骤。所以如果你没有域名,或者太麻烦的话,就用com.github.xxx吧

因为我的网站域名是我自己买的,腾讯云分析的,我去腾讯云加了一个TXT分析值,写为OSSRH-75759。(我的工作订单地址是https://issues.sonatype.org/browse/OSSRH-75759)

稍等几分钟,sonatype将检测到您域名的所有权。

配置gpg秘钥

二、你需要设置gpg密钥,官网gps密钥签署教程:

https://central . sona type . org/publish/publish-maven/# gpg-signed-components

你一定很好奇GPG是什么,

GPG是一种RSA算法的实现。

1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。

sonatype既然允许你上传到公有仓库,肯定要对你这个“人”,进行鉴权。防止其他恶意的人上传Jar包。

我们去官网下载GunPG

https://www.gnupg.org/download/

有各种系统的版本可以下载,我下载了MacOS版。

装好后,我们打开ssh,输入命令:

?  ~ gpg --generate-key

紧接着跟着操作就能生成秘钥,以下是我的生成结果,打了码:

gpg (GnuPG/MacGPG2) 2.2.32; Copyright (C) 2021 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
注意:使用 “gpg --full-generate-key” 以获得一个全功能的密钥生成对话框。
GnuPG 需要构建用户标识以辨认您的密钥。
真实姓名: xxxxxxx
电子邮件地址: xxxxxxx@foxmail.com
您选定了此用户标识:
    “xxxxxxxx xxxxx@foxmail.com”
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q) u
更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q) o
我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘
、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数
发生器有更好的机会获得足够的熵。
我们需要生成大量的随机字节。在质数生成期间做些其他操作(敲打键盘
、移动鼠标、读写硬盘之类的)将会是一个不错的主意;这会让随机数
发生器有更好的机会获得足够的熵。
gpg: 密钥 54EC3C8FA3A5B50F 被标记为绝对信任
gpg: 目录‘/Users/xxxxxxxxx/.gnupg/openpgp-revocs.d’已创建
gpg: 吊销证书已被存储为‘/Users/xxxxxxxxx/.gnupg/openpgp-revocs.d/xxxxxxxxxxxxxxxxxxxxxxxxxxxx.rev’
公钥和私钥已经生成并被签名。
pub   rsa3072 2021-12-06 [SC] [有效至:2023-12-06]
      8BDxxxxxxxxxxxxxxxxxxxxxxxxxxxxB50F
uid                      xxxxxxxx xxxxxxxx@foxmail.com
sub   rsa3072 2021-12-06 [E] [有效至:2023-12-06]

秘钥生成好后,需要你把公钥上传到公共服务器供sonatype验证。

官网教程里有三个地址可以用:

  • keyserver.ubuntu.com
  • keys.openpgp.org
  • pgp.mit.edu

我按照官网给的办法上传:

?  ~ gpg --keyserver pgp.mit.edu:11371 --send-keys 8BD96B0EA18E5162B94EA7F754EC3C8FA3A5B50F
gpg: 正在发送密钥 54EC3C8FA3A5B50F 到 pgp.mit.edu:11371
gpg: 发送至公钥服务器失败:文件结尾
gpg: 发送至公钥服务器失败:文件结尾
?  ~ gpg --keyserver keyserver.ubuntu.com --send-keys 8BD96B0EA18E5162B94EA7F754EC3C8FA3A5B50F
gpg: 正在发送密钥 54EC3C8FA3A5B50F 到 hkp://keyserver.ubuntu.com
gpg: 发送至公钥服务器失败:Network is unreachable
gpg: 发送至公钥服务器失败:Network is unreachable
?  ~ gpg --keyserver pgp.mit.edu:11371 --send-keys 54EC3C8FA3A5B50F
gpg: 正在发送密钥 54EC3C8FA3A5B50F 到 pgp.mit.edu:11371
gpg: 发送至公钥服务器失败:文件结尾
gpg: 发送至公钥服务器失败:文件结尾

但是,报错了,反复尝试了各种网上教程,依然报错。我以为是我网络的问题,或者是那几个服务器也失效了,反正一遍遍的排查,折腾了一个晚上。

就当快要崩溃时,我无意中发现gunpg还是有应用可以打开的,也就是有GUI界面,于是我进去看了看,然后在我的秘钥点击右键,有上传的服务器的选项:

这样居然传成功了,真是大无语啊兄弟们。

配置pom.xml和setting.xml

第三步,你需要按照官网的教程,来配置你的pom.xml和setting.xml文件。大家看到这里已经很累了,我就不按照官网教程那样一步步演示了,直接给你们总结下成功需要添加的配置。

首先是setting.xml。

你需要添加一个profile:

profiles
    profile
      idossrh/id
      activation
        activeByDefaulttrue/activeByDefault
      /activation
      properties
        gpg.executablegpg2/gpg.executable
        gpg.passphraseyzdbwj1993/gpg.passphrase
      /properties
    /profile
  /profiles

还需要一个server,里面需要填写你的ossrh账号密码:

  servers
    server
      idossrh/id
      username你上面注册的账号/username
      password你上面注册的密码/password
    /server
  /servers
/settings

setting.xml配置好了,接下来是你项目的pom.xml。

首先,你需要申明很多plugin,以及一个snapshotRepository,我把所有的都贴在了这里。

distributionManagement
    !--  申明打包到Maven公有仓库  --
    snapshotRepository
        idossrh/id
        urlhttps://s01.oss.sonatype.org/content/repositories/snapshots/url
    /snapshotRepository
/distributionManagement
build
    plugins
        plugin
            groupIdorg.sonatype.plugins/groupId
            artifactIdnexus-staging-maven-plugin/artifactId
            version1.6.7/version
            extensionstrue/extensions
            configuration
                serverIdossrh/serverId
                nexusUrlhttps://s01.oss.sonatype.org//nexusUrl
                autoReleaseAfterClosetrue/autoReleaseAfterClose
            /configuration
        /plugin
        plugin
            groupIdorg.apache.maven.plugins/groupId
            artifactIdmaven-source-plugin/artifactId
            version2.2.1/version
            executions
                execution
                    idattach-sources/id
                    goals
                        goaljar-no-fork/goal
                    /goals
                /execution
            /executions
        /plugin
        plugin
            groupIdorg.apache.maven.plugins/groupId
            artifactIdmaven-javadoc-plugin/artifactId
            version2.9.1/version
            configuration
                javadocExecutable${java.home}/../bin/javadoc/javadocExecutable
            /configuration
            executions
                execution
                    idattach-javadocs/id
                    goals
                        goaljar/goal
                    /goals
                /execution
            /executions
        /plugin
        plugin
            groupIdorg.apache.maven.plugins/groupId
            artifactIdmaven-gpg-plugin/artifactId
            version1.5/version
            executions
                execution
                    idsign-artifacts/id
                    phaseverify/phase
                    goals
                        goalsign/goal
                    /goals
                /execution
            /executions
        /plugin
    /plugins
/build

注意,在maven-javadoc-plugin这个插件添加后,最好像上面一样,加上一个官方教程没有提到的:

configuration
	javadocExecutable${java.home}/../bin/javadoc/javadocExecutable
/configuration

否则你可能会编译失败,提示找不到你的JAVA_HOME环境变量,就像下图这样:

MavenReportException: Error while creating archive: Unable to find javadoc command: The environment variable JAVA_HOME is not correctly set.

之后,你还可以添加上你的一些个人信息:

licenses
  license
    nameThe Apache Software License, Version 2.0/name
    urlhttp://www.apache.org/licenses/LICENSE-2.0.txt/url
    distributionactable/distribution
  /license
/licenses
developers
  developer
    namexxxxxxxxx Yang/name
    emailxxxxxxxxx@foxmail.com/email
    organizationxxxxxxxxxx/organization
  /developer
/developers
scm
  tagmaster/tag
  urlgit@github.com:qqxx6661/logRecord.git/url
  connectiongit@github.com:qqxx6661/logRecord.git/connection
  developerConnectiongit@github.com:qqxx6661/logRecord.git/developerConnection
/scm

正式打包发布

最后,一切都准备好了,你可以进行最神圣的一个指令

mvn clean deploy

紧接着就上传成功了

你的工单这时候也会更新一条信息:

Central sync is activated for cn.monitor4all. After you successfully release, your component will be available to the public on Central https://repo1.maven.org/maven2/, typically within 30 minutes, though updates to https://search.maven.org can take up to four hours.

你的Jar包会在30分钟左右能够被拉取。

下图就是成功的截图拉。

后记

不知道看完文章,你觉不觉得麻烦呢其实我自己看一遍写的文字,感觉步骤还是蛮简单的。但自己之前搞不定的时候,还是感觉蛮痛苦的。

希望我走的弯路,能帮大家避开大坑,更快的完成自己项目的上传。

我是目前在阿里搬砖的工程师蛮三刀酱。

持续的创作离不开你的点赞和转发分享!

参考

https://segmentfault.com/a/1190000023781503

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/146475.html

(0)

相关推荐

  • 怎么把if-else重构成高质量代码

    技术怎么把if-else重构成高质量代码本篇内容介绍了“怎么把if-else重构成高质量代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年10月21日
  • 一语成,历史上有哪些一语成谶的事

    技术一语成,历史上有哪些一语成谶的事隶属于昆明陆军总司令部的第四方面军组建于1945年3月5日一语成,仅仅一个多月后,方面军司令官王耀武就指挥所部在湘西大破日寇,一举取得雪峰山大捷,8月在芷江出席日军投降的草签仪式,不久

    生活 2021年10月30日
  • Postgresql性能相关操作系统及数据库说明

    技术Postgresql性能相关操作系统及数据库说明本篇内容主要讲解“Postgresql性能相关操作系统及数据库说明”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Postg

    攻略 2021年11月9日
  • 质量摩尔浓度公式,溶质溶液浓度计算公式字母

    技术质量摩尔浓度公式,溶质溶液浓度计算公式字母溶液浓度的计算公式有溶液的质量百分比浓度=溶质质量/溶液质量×100%;摩尔浓度(mol/L)=溶质摩尔数/溶液体积(升);当量浓度=溶质的克当量数/溶液体积(升);质量-体

    生活 2021年10月22日
  • 精益求精是什么意思,精益求精精益求精的精是什么意思

    技术精益求精是什么意思,精益求精精益求精的精是什么意思一、意思是:(学术、技术、作品、产品等)好了还求更好精益求精是什么意思。二、引证:毛泽东《纪念白求恩》:白求恩同志是个医生,他以医疗为职业,对技术~;在整个八路军医务

    生活 2021年10月21日
  • 掌握的拼音,掌握7000个汉字是什么水平

    技术掌握的拼音,掌握7000个汉字是什么水平掌握7000个汉字是什么概念掌握的拼音?
    我们先一起来了解汉字的总数:
    日前,通过专家鉴定的北京国安资讯设备公司汉字字库,收入有出处的汉字91251个。专家表示,这是我们目前收

    生活 2021年10月28日