maven--将jar包上传到maven中央仓库(公库)

原文网址:maven--将jar包上传到maven中央仓库(公库)-CSDN博客

简介

本文介绍怎样将jar包上传到maven中央仓库(公库)。

当自己有一些公共组件时,上传到maven公库是最好的,这样项目里直接引用即可,不需要在多处修改,而且所有人都可以直接使用。

本文环境是:Windows系统,maven3,java8,Idea2023。

1.注册Sonatype JIRA账号

网址:Sign up for Jira - Sonatype JIRA

注意:用户名一定要用英文的。 

2.准备groupid

Maven 用 groupid 来标识项目空间,用域名逆序的方式命名。下面是两种命名的例子,如果有自己的域名,直接使用就可以;如果没有,可以使用 github 等代码托管服务的域名。

  1. www.springframework.org => org.springframework
  2. subdomain.example.com => com.example
  3. my-domain.com => com.my-domain
  4. github.com/abc => io.github.abc

下面是支持个人 groupid 的代码托管服务,假设使用 io.github.myusername ,需要创建一个名为 OSSRH-序列码的公开仓库进行验证(验证成功后可删除)。如果使用自己的域名,后边需要添加 TXT 解析,让maven中央仓库知道你是域名的所有者。

服务groupid相关文档
GitHubio.github.myusernamehttps://pages.github.com/
GitLabio.gitlab.myusernamehttps://about.gitlab.com/stages-devops-lifecycle/pages/
Giteeio.gitee.myusernamehttps://gitee.com/help/articles/4136
Bitbucketio.bitbucket.myusernamehttps://support.atlassian.com/bitbucket-cloud/docs/publishing-a-website-on-bitbucket-cloud/
SourceForgeio.sourceforge.myusernamehttps://sourceforge.net/p/forge/documentation/Project%20Web%20Services/

假设我本处准备的域名是:abc.com。

3.创建JIRA工单

1.创建JIRA工单

新建工单

进入JIRA主页,点击新建:

填写相应内容 

概要的那句话是:

Create and upload project

描述里的那句话是:

Hello, I want to create a new project, and upload to maven center repo.

继续往下滑,还有其他要填写的内容:

然后点击下方的创建

创建后可以看到问题编号:

此时,你会收到一封邮件:通知你成功创建了一条JIRA工单。 

2.收到评论

过了几分钟后,我收到了Sonatype JIRA的邮件,说我收到了一条评论。

点击上边JIRA里创建的JIRA(菜单栏=> 问题),即可看到评论信息:

4.验证域名

1.添加DNS记录

修改DNS,添加一条TXT记录(验证成功后,这个DNS记录删除即可)。

将上边的评论里的OSSRH-xxx复制一下,把它添加到DNS的TXT(主机记录是@,记录值是OSSRH-xxx) 

2.告诉工作人员已经添加

这里我的回复是:I hava added a DNS TXT record to my domain. 

3.工作人员回复

工作人员审核验证完之后会回复你,工单状态会变为“已解决”,就可以上传maven项目了。

一个小时后,邮件里说我收到了JIRA回复,查看JIRA,收到的回复如下:

工单状态变成了“已解决” 

5.配置GPG密钥

1.下载gpg工具

下载地址

https//www.gnupg.org/download/

gpg --version

2.生成密钥 

生成密钥

gpg --gen-key

提示输入名字和邮箱。输入后,再输入O,回车。然后会弹出要输入密码,这里的密码一定要记住,后边要用。(密码是为了保护私钥用的)

红色箭头即生成的公钥,后边要用(密钥有效期为3年,到时要用密码延长有效期(重新生成也可以))。

发送公钥

gpg --keyserver keyserver.ubuntu.com --send-keys 你的公钥

 本处我是:

gpg --keyserver hkp://keyserver.ubuntu.com --send-keys 6C1D0E2XXXXXXXXXEC423

如下:

查看公钥

等几分钟,验证公钥是否发布成功:

​gpg --keyserver keyserver.ubuntu.com --recv-keys 6C1D0E2XXXXXXXXXEC423

 如下:

备注:

忘记了公钥,也可以通过gpg --list-keys查看当前所有的公钥

3.密钥导入导出

在不同的电脑上操作时,可以直接用现成的密钥。这就需要用导出导入功能。

导出

导出公钥

命令格式:

gpg -a -o public-file.key --export keyId : 导出公钥keyId 到 文件 public-file.key中;

-a 为 --armor 的简写,表示密钥以ASCII的形式输出,默认以二进制的形式输出;
-o 为 --output 的简写,指定写入的文件;

gpg -a -o public-file.key --export 6C1D0E2XXXXXXXX7CE3EC423

导出私钥(导出私钥需要输入之前设置的保护私钥密码)

gpg -a -o private-file.key --export-secret-keys 6C1D0E2XXXXXXXX7CE3EC423

导入

导入公钥

gpg --import public-file.key

导入私钥(导入私钥需要输入保护私钥的密码)

gpg --import private-file.key

6.发布JAR包

1.修改settings.xml

添加如下内容

<settings><servers><server><id>ossrh</id><username>JIRA用户名</username><password>JIRA密码</password></server></servers>
</settings><profiles><profile><id>ossrh</id><properties><!--这里填你安装的GnuPG位置--><gpg.executable>D:/Program Files (x86)/GnuPG/bin/gpg.exe</gpg.executable></properties></profile>
</profiles>

2.修改pom.xml

下边标记了“用于发布”的,都是要与发布JAR包有关的配置。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.13</version><relativePath/></parent><groupId>com.abc</groupId><artifactId>test-util</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>{project.artifactId}</name><description>test-util</description><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2020.0.1</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional><scope>provided</scope></dependency></dependencies><build><plugins><!--指定JDK版本--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><!-- <version>3.5.1</version> --><!-- 指定maven编译的jdk版本。对于JDK8,写成8或者1.8都可以 --><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build><!--用于发布:插件和仓库等信息--><profiles><profile><id>ossrh</id><activation><activeByDefault>true</activeByDefault></activation><distributionManagement><snapshotRepository><!--此id必须与setting.xml的servers=>server=>id中指定的一致--><id>ossrh</id><url>https://s01.oss.sonatype.org/content/repositories/snapshots</url></snapshotRepository><repository><id>ossrh</id><url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url></repository></distributionManagement><build><plugins><!--发布到staging--><plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>1.6.8</version><extensions>true</extensions><configuration><serverId>ossrh</serverId><nexusUrl>https://s01.oss.sonatype.org/</nexusUrl><!--自动release--><autoReleaseAfterClose>true</autoReleaseAfterClose></configuration></plugin><!--发布源码--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>3.2.1</version><executions><execution><id>attach-sources</id><phase>package</phase><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin><!-- Javadoc --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>3.1.1</version><configuration><charset>UTF-8</charset><encoding>UTF-8</encoding><docencoding>UTF-8</docencoding><additionalJOption>-Xdoclint:none</additionalJOption></configuration><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals></execution></executions></plugin><!--gpg加密--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>1.6</version><executions><execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions></plugin></plugins></build></profile></profiles><!--用于发布:开源协议...--><licenses><license><name>The Apache Software License, Version 2.0</name><url>https://www.apache.org/licenses/LICENSE-2.0.txt</url></license></licenses><!--用于发布:项目链接--><scm><url>https://github.com/xxx/test-util</url><connection>https://github.com/xxx/test-util.git</connection></scm><!--用于发布:开发者信息--><developers><developer><id>xxx</id><name>xxx</name><email>yyy@163.com</email><url>https://github.com/xxx</url></developer></developers></project>

3.发布

4.查看发布结果

https://s01.oss.sonatype.org/

进去后,右上角有个登录。用第1步里注册的JIRA账号密码登录即可。

搜索一下自己的jar包,如下图所示:(成功上传到了Snapshots仓库)

大概过四个小时后,可以在中央仓库搜索到。

新地址:https://central.sonatype.com/

老地址:https://search.maven.org/

snapshot发布后,没有邮件通知。 

之后可以在项目中直接引用

<dependency><groupId>com.abc</groupId><artifactId>test-util</artifactId><version>0.0.1-SNAPSHOT</version>
</dependency>

5.发布release版本

上边是snapshot版本,下边看正式版本的发布。

将版本号0.0.1-SNAPSHOT改为:0.0.1。然后重新点击IDEA的maven clean和maven deploy

发布成功后,会收到JIRA的邮件:

查看发布结果

因为在 maven 插件 nexus-staging-maven-plugin 中 autoReleaseAfterClose 设置为 true 了,所以会自动上传到 staging repository ,并且自动执行了 close=>release=>drop 三步曲(即:自动release)。

在仓库里搜索

大概过四个小时后,可以在中央仓库搜索到。 

新地址:https://central.sonatype.com/

老地址:https://search.maven.org/

再过一两个小时,就可以在阿里仓库和mvnrepository搜到了。

之后可以在项目中直接引用

<dependency><groupId>com.abc</groupId><artifactId>test-util</artifactId><version>0.0.1</version>
</dependency>

总结

第一次发布时,上边所有步骤都要做。以后再发布时,只操作第6步即可!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】基本指令(上)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 目录 Xshell快捷键 Linux基本指令 ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令/rm指令 结语 Xshell快捷键 AltEnter 全屏/取消全屏 Tab 进…

-1- Python环境安装

1、Python安装 1.1、Windows安装Python 进入python官网&#xff1a;Welcome to Python.org点击 download——>all releases&#xff1b;建议选择3.7.2版本&#xff08;网页链接&#xff1a;Python Release Python 3.7.2 | Python.org&#xff09;&#xff1b;下拉&#xf…

理想架构的高回退Doherty功率放大器理论与ADS仿真-Multistage

理想架构的高回退Doherty功率放大器理论与仿真-Multistage 参考&#xff1a; 三路Doherty设计 01 射频基础知识–基础概念 Switchmode RF and Microwave Power Amplifiers、 理想架构的Doherty功率放大器&#xff08;等分经典款&#xff09;的理论与ADS电流源仿真参考&#x…

go语言socket编程

1.互联网分层模型 过程分析&#xff1a; 2.Socket图解 Socket是应用层与TCP/IP协议族通信的中间软件抽象层。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c;它把复杂的TCP/IP协议族隐藏在Socket后面&#xff0c;对用户来说只需要调用Socket规定的相关函数&a…

备战蓝桥杯---数据结构与STL应用(优先队列的小细节)

很显然&#xff0c;我们先二分求X,对于验证&#xff0c;一开始我先想的是直接求每个的不足电量再除充电量后向上取整&#xff0c;然后判断与k的大小关系。事实上&#xff0c;如果让k很大&#xff0c;若有两只手机在下一刻多没电&#xff0c;显然上述方法得出的结论是错误的&…

氢气泄漏检测仪使用方法:守护安全,从细节开始

随着科技的发展&#xff0c;我们的生活和工作环境中充满了各种潜在的危险。其中&#xff0c;氢气作为一种清洁能源&#xff0c;其使用日益广泛&#xff0c;但同时也带来了泄漏的风险。为了确保我们的安全&#xff0c;了解并正确使用氢气泄漏检测仪至关重要。下面将详细介绍氢气…

机器学习:梯度下降法(Python)

LinearRegression_GD.py import numpy as np import matplotlib.pyplot as pltclass LinearRegression_GradDesc:"""线性回归&#xff0c;梯度下降法求解模型系数1、数据的预处理&#xff1a;是否训练偏置项fit_intercept&#xff08;默认True&#xff09;&…

了解 Redis Channel:消息传递机制、发布与订阅,以及打造简易聊天室的实战应用。

文章目录 1. Redis Channel 是什么2. Redis-Cli 中演示使用3. 利用 Channel 打造一个简易的聊天室参考文献 1. Redis Channel 是什么 Redis Channel 是一种消息传递机制&#xff0c;允许发布者向特定频道发布消息&#xff0c;而订阅者则通过订阅频道实时接收消息。 Redis Cha…

BioTech - 小分子药物生成与从头设计 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/135930139 小分子药物生成是一种利用计算方法自动探索化学空间&#xff0c;寻找具有理想生物活性和药物特性的分子结构的过程。从头设计是一种特殊…

【日常总结】windows11 设置文件默认打开方式

一、场景 二、实战 Stage 1&#xff1a;打开设置 Stage 2&#xff1a;应用 > 默认应用 > 搜索 .txt Stage 3&#xff1a;修改成notepad &#xff0c;设置默认值即可 一、场景 windows 11 .txt 默认记事本打开 需求&#xff1a;如何使用notepad打开呢 &#xff1f;…

隧道穿越:隧道穿透技术介绍

后面会进行一些隧道穿越的实验&#xff0c;因此在本篇中这里先介绍一些有关隧道穿越的技术知识点 隧道和隧道穿透 隧道是一种通过互联网基础设施在网络之间传递数据的方式&#xff0c;设计从数据封装、传输到解包的全过程&#xff0c;使用隧道传递的数据&#xff08;或者负载…

abap_bool 类型

abap_bool 类型 abap_bool 有两种abap_true和abap_false&#xff0c;abap_true代表x&#xff0c;abap_false是空

【Emgu CV教程】6.7、图像平滑之MedianBlur()中值滤波

文章目录 一、介绍1.原理2.函数介绍 二、举例1.原始素材2.代码3.运行结果 一、介绍 1.原理 图像的滤波分为线性滤波和非线性滤波,常见的线性滤波就是前面介绍的均值滤波、方框滤波、高斯滤波。常见的非线性滤波主要包括中值滤波、双边滤波&#xff0c;今天就先介绍中值滤波。…

二进制安全虚拟机Protostar靶场(5)堆的简单介绍以及实战 heap0

前言 这是一个系列文章&#xff0c;之前已经介绍过一些二进制安全的基础知识&#xff0c;这里就不过多重复提及&#xff0c;不熟悉的同学可以去看看我之前写的文章 什么是堆 堆是动态内存分配的区域&#xff0c;程序在运行时用来分配内存。它与栈不同&#xff0c;栈用于静态…

asdf安装不同版本的nodejs和yarn和pnpm

安装asdf 安装nodejs nodejs版本 目前项目中常用的是14、16和18 安装插件 asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git asdf plugin-add yarn https://github.com/twuni/asdf-yarn.git可以查看获取所有的nodejs版本 asdf list all nodejs有很多找…

【TCP】三次握手(建立连接)

前言 在网络通信的世界里&#xff0c;可靠传输协议&#xff08;TCP&#xff09;扮演着重要的角色&#xff0c;它保证了数据包能够按顺序、完整地从发送端传送到接收端。TCP协议中有一个至关重要的机制——三次握手。这一过程确保了两个TCP设备在开始数据传输之前建立起一个稳定…

机器的大小端存储模式

大、小端字节序 一个整形数据在内存中的存储方式是该数据的补码&#xff1b; 该数据本事的数据是从高地址位到低地址位的&#xff0c;而计算机的内存中刚好相反&#xff01; 以数字10为例&#xff1a; 补码&#xff1a;0000 0000 0000 0000 0000 0000 0000 1010 补码的十六进制…

Redis简单阐述、安装配置及远程访问

目录 一、Redis简介 1.什么是Redis 2.特点 3.优势 4.数据库对比 5.应用场景 二、 安装与配置 1.下载 2.上传解压 3.安装gcc 4.编译 5.查看安装目录 6.后端启动 7.测试 8.系统服务配置 三、Redis远程访问 1.修改访问IP地址 2.设置登录密码 3.重启Redis服务 …

Maven安装,学习笔记,详细整理maven的一些配置

Maven 1. 初识Maven 2. Maven概述 Maven模型介绍 Maven仓库介绍 Maven安装与配置 3. IDEA集成Maven 4. 依赖管理 01. Maven课程介绍 1.1 课程安排 学习完前端Web开发技术后&#xff0c;我们即将开始学习后端Web开发技术。做为一名Java开发工程师&#xff0c;后端 Web开发技术…