自定义组件上传到maven中央仓库2024实测可用最详细版

news2024/9/20 13:11:35

自 2024 年 3 月 12 日起,官方调整了发布的方式,所有发布都必须通过中央门户,以往老方式可能不适用,以下记录2024新版上传发布方式

注册sonatype账号

Maven中央仓库并不支持直接发布jar包,sonatype是其指定的第三方仓库之一,发布到此的项目会被定时同步到中央仓库
官方教程地址:https://central.sonatype.org/register/central-portal/

1.访问网址:https://central.sonatype.com/,并点击右上角访问登陆界面

在这里插入图片描述

2.注册sonatype账号

(1)自行创建账号方式【创建好账号后点击新建命名空间,建好后会提示绑定自己的域名-这里的域名需要反向填写如下图,
并解析提供的DNS记录值。此方法适合想用自己域名定义groupId并乐于折腾的,新手建议参考方法(2)】

在这里插入图片描述

在这里插入图片描述

(2)gitee/github账号直接登录【适合新手,直接用git的域名方便。github的用户名如下图】

在这里插入图片描述

根据gitee/github新建namespace秒通过【格式为io.github.用户名】

在这里插入图片描述

3.获取User Token并配置本地maven

在这里插入图片描述
在这里插入图片描述

(1)点击确定后会生成如下信息,将信息复制到本地maven-config-settings.xml的<servers>标签中。用于上传jar包时验证身份使用。

在这里插入图片描述
在这里插入图片描述

4.安装GPG并生成密钥【官网说明上传时必须使用GPG签名,需要下载软件获取签名】

(1)官网地址:https://gnupg.org/download/index.html
(2)进入网站后下拉选择windows版本下载

在这里插入图片描述
在这里插入图片描述

(3)点击0捐助白嫖下载,想捐助的也可以

在这里插入图片描述

(4)无脑下一步安装即可
(5)安装完成后会有两个文件夹,cmd进入GnuPG的bin目录,输入`gpg --version`验证是否安装成功

在这里插入图片描述

在这里插入图片描述

(6)生成密钥:命令行输入gpg --gen-key,按提示依次输入RealName、email,确认无误输入O之后会提示输入密码。
此密码需要记住,上传仓库时需要使用

在这里插入图片描述

输入密码后,中间这串就是生成的密钥。如果关闭cmd窗口则可以使用gpg --list-keys命令查询已生成的密钥。

在这里插入图片描述

上述生成密匙也可点击桌面图标进入图形化程序操作,获取密匙id即可

在这里插入图片描述

(7)发布密匙验证,cmd输入gpg --keyserver keyserver.ubuntu.com --send-keys 密匙ID。
或者在图形化界面选择一个证书点击右键选择`在服务器上发布`
中央服务器当前支持的 GPG 密钥服务器有(如果遇到报错换着来试试):

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

在这里插入图片描述

(8)发布完成后,将密匙配置到本地maven的settings.xml的<profiles>标签中,并添加<activeProfiles>标签
 </profiles>
   <profile>
        <id>gpg</id>
        <properties>
        	<!--这里为gpg安装目录>
            <gpg.executable>D:\gpg4\GnuPG\bin</gpg.executable>
            <gpg.passphrase>{证书密码}</gpg.passphrase>
        </properties>
    </profile>
  </profiles>

在这里插入图片描述

注:<profile>标签中的<id>标签值需要和<activeProfile>标签值对应

5.修改要发布的pom.xml文件【这里默认已写好了要上传的代码】

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
	<!-- 特别注意:此处groupId不能自定义,需要与sonatype网站建好的namespace名称对应,有多个namespace无所谓,选择一个即可
	,否则上传失败一直报not allow groupId -->
    <groupId>io.github.955-955</groupId>
    <artifactId>xxxx-spring-boot-starter</artifactId>
    <version>1.1-beta</version>
    <packaging>jar</packaging>
    <name>名称</name>
    <description>描述</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.18</version>
    </parent>
    <licenses>
        <license>
            <name>Apache License 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
        </license>
    </licenses>
    <!--  填写自己的git地址  -->
    <scm>
        <connection>scm:git:git://github.com:955-955</connection>
        <developerConnection>scm:git:git@github.com:955-955</developerConnection>
        <url>https://github.com/955-955</url>
        <tag>HEAD</tag>
    </scm>
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <!--  所需依赖  -->
    </dependencies>
    	<!--  以下插件必须有  -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${maven.compiler.source}</source>
                    <target>${maven.compiler.target}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <!-- Source -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.1.0</version>
                <inherited>true</inherited>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <excludeResources>true</excludeResources>
                    <useDefaultExcludes>true</useDefaultExcludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.6.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <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>
                <configuration>
                    <!-- 改成你自己的路径 -->
                    <executable>D:\gpg4\GnuPG\bin\gpg.exe</executable>
                </configuration>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.sonatype.central</groupId>
                <artifactId>central-publishing-maven-plugin</artifactId>
                <version>0.4.0</version>
                <extensions>true</extensions>
                <configuration>
                    <!-- 这里的serverId是之前在本地settings.xml中配置的<server><id>标签值(上述三(1)步骤) -->
                    <publishingServerId>xxxxx</publishingServerId>
                    <tokenAuth>true</tokenAuth>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

6.点击deploy后输入密码即可自动上传,上传成功后会在网站显示是否有错误,有错误修改,没错误则点击publish发布等待提示published,大约10分钟后会发布成功可以查询到,阿里镜像和中央仓库会稍后自动同步。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

完成后即可引入坐标使用

在这里插入图片描述

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

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

相关文章

【Python】函数进阶(上)

本篇文章将讲解函数进阶的知识&#xff1a; &#xff08;1&#xff09;函数的补充 &#xff08;2&#xff09;函数名是什么 &#xff08;3&#xff09;返回值和print &#xff08;4&#xff09;函数的作用域 1、函数的补充 &#xff08;1&#xff09;参数内存地址相关 如何查…

【算法专题】滑动窗口类

个人主页&#xff1a;CSDN_小八哥向前冲~ 所属专栏&#xff1a;算法基础入门 目录 长度最小的子数组 无重复字符的最长子串 最大连续1的个数 将x减到0的最小操作数 水果成篮 找到字符串中所有字母异位词 最小覆盖字串 长度最小的子数组 题目&#xff1a;【LeetCode】长度…

Python生成432Hz音频

使用 numpy 来生成信号&#xff0c; 使用 matplotlib 可视化信号&#xff0c; 使用 sounddevice 播放声音。 以下生成和播放 432 Hz 的正弦波信号&#xff1a; import numpy as np import sounddevice as sd import matplotlib.pyplot as plt# 生成单音函数 def generate_to…

订单完工数量超过了最大可完工数量

本次完工将造成订单YWS-24070027产出实际完工数量达到了6093.000000000&#xff0c;超过了最大可完工数量5000.000000000 一个成品入库单被它们玩坏了。生产不知道生产了什么。PMC不知道要入库什么。鸡同鸭天天开会之后结果就是单据重复的开立&#xff0c;删除&#xff0c;开立…

C++ TinyWebServer项目总结(5. Linux网络编程基础API)

还是给我的语雀文档打个广告&#xff1a; 《5. C TinyWebServer项目总结&#xff08;5. Linux网络编程基础API&#xff09;》我的文章都是先在语雀里记录的&#xff0c;然后再同步发送到CSDN上&#xff0c;有些格式问题实在是懒得改了&#xff0c;可能会导致大家看的不舒服&…

自行车制造5G智能工厂工业物联数字孪生平台,推进制造业数字化

在当今这个日新月异的数字化时代&#xff0c;制造业正经历着前所未有的变革&#xff0c;自行车制造5G智能工厂工业物联数字孪生平台的兴起&#xff0c;无疑是这场转型浪潮中一股强劲力量。自行车制造5G智能工厂工业物联数字孪生平台的成功应用&#xff0c;不仅仅是技术上的突破…

代码随想录DAY21 - 二叉树 - 08/20

目录 修建二叉搜索树 题干 思路和代码 递归法 迭代法 将有序数组转化为平衡二叉搜索树 题干 思路和代码 递归法 递归优化 迭代法 把二叉搜索树转换为累加树 题干 思路和代码 递归法 迭代法 修建二叉搜索树 题干 题目&#xff1a;给你二叉搜索树的根节点 root …

数据结构【顺序结构二叉树:堆】(1)

​​​​​​​ &#x1f31f;个人主页&#xff1a;落叶 目录 ​ &#x1f525;树的概念与结构​​​​​​​ &#x1f525;树的表⽰ &#x1f525;孩⼦兄弟表⽰法&#xff1a; &#x1f525;树形结构实际运⽤场景 &#x1f525;⼆叉树 &#x1f525;概念与结构 &…

day4JS-数组

1. 什么是数组 数组是值的有序集合。每个值叫做一个元素。每个元素在数组中有一个位置, 以数字表示,称为索引 (有时也称为下标)。数组的元素可以是任何类型。数组索引从 0 开始,数组最大能容纳 4294967295 个元素。 2. 数组的声明与使用 2.1 使用字面量的方式声明数组 语法…

Minio web控制台实现授权管理

启动minio ./minio server /data01/aidacp/apps/minio/data --config-dir /data01/aidacp/apps/minio/conf --address 127.0.0.1:19090 --console-address 127.0.0.1:19091 &WARNING: Detected Linux kernel version older than 4.0.0 release, there are some known pote…

建设项目跟踪与展示系统

这是在翻旧文件时翻到的16年写的一个项目 建设项目跟踪与展示系统 建设方案 一、系统建设目的及意义 建设工程项目进度控制的最终目的是确保建设项目按预定的时间完成。能否在预定的时间内交付使用&#xff0c;直接影响到投资效益。为解决施工组织过程中存在问题&#xff0c;…

PyTorch深度学习实战(25)—— 使用向量化思想解决实际问题

本文将实际应用向量化思想解决深度学习中的几个经典问题,读者可以在这些示例中进一步领悟向量化思想和高级索引思想。 1. Box_IoU Box_IoU是目标检测任务中最基本的评价指标。简单来说,Box_IoU就是模型预测的检测结果框(predicted bbox)与原始标记框(ground truth)之间的…

企业级Nginx源码安装及其实战讲解

一&#xff1a;web服务基础介绍 1.1Web服务介绍 Apache 经典的 Web 服务端 Apache起初由美国的伊利诺伊大学香槟分校的国家超级计算机应用中心开发 目前经历了两大版本分别是1.X和2.X 其可以通过编译安装实现特定的功能 Apache prefork 模型 预派生模式&#xff0c;有一个…

[C++进阶]map和set

一、关联式容器 STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面存储的是元素本身。 那什么是关联式容器&#xff1f;它与序列式容器…

2.复杂度分析

2.1 算法效率评估 在算法设计中&#xff0c;我们先后追求以下两个层面的目标。 找到问题解法&#xff1a;算法需要在规定的输入范围内可靠地求得问题的正确解。寻求最优解法&#xff1a;同一个问题可能存在多种解法&#xff0c;我们希望找到尽可能高效的算法。 也就是说&a…

JavaScript_7_练习:随机抽奖案例

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>练习&#xff1a;随机抽奖案例</tit…

做谷歌seo如何选择好的服务器?

做谷歌seo如何选择好的服务器&#xff0c;如果你选择自托管平台&#xff0c;那么服务器的选择就非常关键了&#xff0c;服务器的好与坏影响着你的网站的表现&#xff0c;所以选择服务器要慎重。以下是一些建议&#xff0c;帮你做出明智的选择&#xff1a; 安全性&#xff1a;安…

Python Web框架 Django学习记录:1 项目安装,启动

Windows上学习Django # 创建一个虚拟环境 python -m venv tutorial-env# 激活虚拟环境 tutorial-env\Scripts\activate# 安装Django py -m pip install Django# 查看Django版本 py -m django --version# 使用脚手架创建一个项目 django-admin startproject mysite# 启动项目 cd…

linux出现sql密码被忘记的解决方法

目录 前言正文 前言 此处放置在运维篇章&#xff0c;对应sql的修改密码&#xff0c;推荐阅读&#xff1a;修改sql密码&#xff08;涵盖多个版本&#xff09; 如果补充Sql的基本知识&#xff0c;推荐阅读&#xff1a;Mysql底层原理详细剖析常见面试题&#xff08;全&#xff0…

git本地仓库同步到远程仓库

整个过程分为如下几步&#xff1a; 1、本地仓库的创建 2、远程仓库的创建 3、远程仓库添加key 4、同步本地仓库到远程仓库 1、本地仓库的创建&#xff1a; 使用如下代码创建本地仓库&#xff1a; echo "# test" >> README.md git init git add README.md …