使用gradle将java项目推送至maven中央仓库(最新版)

news2025/1/15 7:24:24

前言

maven中央仓库于2024年3月进行改版,下面介绍新的推送方式


一、将项目推送到github

过程略

二、注册sonatype账号

仓库地址:https://central.sonatype.com/

这里选择使用github账号登录,不注册新的了
在这里插入图片描述

三、创建命名空间

在这里插入图片描述
这里会自动校验通过了一个github子域名,可以直接使用,就不用创建了
在这里插入图片描述

如需创建自己新的命名空间,需要有真实域名,并需要做验证,过程较繁琐。

四、创建token

在这里插入图片描述
在这里插入图片描述
拷贝生成的两串,待用

五、GPG生成秘钥

下载gpg生成工具,这里使用windows版
下载地址:https://www.gpg4win.org/get-gpg4win.html
安装完成后生成秘钥

1、生成key

gpg --gen-key

填写Real name(姓名)和Email Address(邮箱,最好用真实的,可用于密钥找回)
输入"O"回车,弹出弹窗,填写密码口令(自定义,后面会用到)两次,然后点击OK,密匙就创建好了

在这里插入图片描述
在这里插入图片描述
此处生成公钥:0773652F9BFCE458892BDCB38C0EC18E42A31653
这个公钥的后八位就是后面配置中的的signing.keyId(注意是后八位,这里也就是42A31653)
生成时设置的密码为后面配置中的signing.password

2、发布公钥

gpg --keyserver keyserver.ubuntu.com --send-keys 0773652F9BFCE458892BDCB38C0EC18E42A31653

如果出现发送失败的情况,可以选择其他服务器多次重试,总会成功的
中央服务器支持的GPG密钥服务器有:
keyserver.ubuntu.com
keys.openpgp.org
pgp.mit.edu

验证公钥是否上传成功

gpg --keyserver keyserver.ubuntu.com --recv-keys 0773652F9BFCE458892BDCB38C0EC18E42A31653

在这里插入图片描述

3、导出key

gpg --export-secret-key 0773652F9BFCE458892BDCB38C0EC18E42A31653 > secret.gpg

过程中弹出密码输入框,输入创建时设置的密码
这里生成的secret.gpg文件就是后面配置中的signing.secretKeyRingFile

六、在项目的build.gradle中配置

如果使用build.gradle.kts可自行转换一些语法
可参考的的项目配置:https://github.com/iscasDmo/data-middle-office-sdk

引入插件sonatype-uploader

dependencies {
classpath group: 'io.github.jeadyx.sonatype-uploader', name: 'io.github.jeadyx.sonatype-uploader.gradle.plugin', version: '2.8'
}

应用插件maven-publish、signing、sonatype-uploader

 apply plugin: 'maven-publish'
 apply plugin: 'signing'
 apply plugin: 'io.github.jeadyx.sonatype-uploader'

group使用上面验证的域名

 group = 'io.github.iscasdmo'

配置publishing

 publishing {
        publications {
            mavenJava(MavenPublication) {
                groupId project.group
                artifactId project.name
                version project.version
                //若是war包,就写components.web,若是jar包,就写components.java
                from components.java
                pom {
                    // 构件名称
                    // 区别于artifactId,可以理解为artifactName
                    name = 'data-middle-office-sdk'
                    // 构件描述
                    description = '数据中台sdk'
                    // 构件主页
                    url = 'https://github.com/iscasDmo/data-middle-office-sdk'
                    // 许可证名称和地址
                    licenses {
                        license {
                            name = 'The Apache License, Version 2.0'
                            url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        }
                    }
                    // 开发者信息
                    developers {
                        developer {
                            id = 'iscas'
                            name = 'iscas'
                            email = '461402005@qq.com'
                        }
                    }
                    // 版本控制仓库地址
                    scm {
                        url = 'https://github.com/iscasDmo/data-middle-office-sdk'
                        connection = 'scm:git:https://github.com/iscasDmo/data-middle-office-sdk.git'
                        developerConnection = 'scm:git:https://github.com/iscasDmo/data-middle-office-sdk.git'
                    }
                }
            }
        }
        // 定义发布到哪里
        repositories {
            maven {
                url = layout.buildDirectory.dir('repo')
            }
        }
    }

修改其中的name、description、developsers、scm相关配置,其中url为github中项目地址;connection和developerConnection也对应github中项目git地址,前面多了scm:git:。

配置签名

 signing {
        sign publishing.publications.mavenJava
    }

在项目根目录gradle.properties中添加配置,值为GPG生成的

signing.keyId=ABC2E7F0
signing.password=Isc@s12345678
signing.secretKeyRingFile=C:/Users/admin/secret.gpg

配置sonatype-uploader

   sonatypeUploader {
        repositoryPath = layout.buildDirectory.dir("repo").get().asFile.path
        tokenName = "${tokenUsername}"
        tokenPasswd = "${tokenPassword}"
        signing = {
            it.keyId="${signing.keyId}"
            it.keyPasswd="${signing.password}"
            it.secretKeyPath="${signing.secretKeyRingFile}"
        }
        pom = {
            it.name = "data-middle-office-sdk"
            it.description = "数据中台sdk"
            it.url = "https://github.com/iscasDmo/data-middle-office-sdk"
            it.licenses {
                license {
                    name = "The Apache License, Version 2.0"
                    url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
                }
            }
            it.developers {
                developer {
                    id = "iscas"
                    name = "iscas"
                    email = "461402005@qq.com"
                }
            }
            it.scm {
                connection = "scm:git:https://github.com/iscasDmo/data-middle-office-sdk.git"
                developerConnection = "scm:git:https://github.com/iscasDmo/data-middle-office-sdk.git"
                url = "https://github.com/iscasDmo/data-middle-office-sdk"
            }
        }
    }

其中tokenName和tokenPassword使用前面生成的。

完整配置参考:https://github.com/iscasDmo/data-middle-office-sdk

七、发布

先执行publishing,再执行publishToSonatype

在这里插入图片描述
去中央仓库查看

在这里插入图片描述
刚推送时这里显示publishing,等待一段时间(少则几分钟,多则一两天),变成published,就可以使用maven/gradle坐标引用了。

在这里插入图片描述
在搜索栏搜索
在这里插入图片描述
点进去查看引用坐标
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

2012年国赛高教杯数学建模D题机器人避障问题解题全过程文档及程序

2012年国赛高教杯数学建模 D题 机器人避障问题 图1是一个800800的平面场景图,在原点O(0, 0)点处有一个机器人,它只能在该平面场景范围内活动。图中有12个不同形状的区域是机器人不能与之发生碰撞的障碍物,障碍物的数学描述如下表&#xff1a…

uniapp 整合 OpenLayers - 加载Geojson数据(在线、离线)

Geojson数据是矢量数据&#xff0c;主要是点、线、面数据集合 Geojson数据获取&#xff1a;DataV.GeoAtlas地理小工具系列 实现代码如下&#xff1a; <template><!-- 监听变量 operation 的变化&#xff0c;operation 发生改变时&#xff0c;调用 openlayers 模块的…

牛只行为及种类识别数据集18g牛只数据,适用于多种图像识别,目标检测,区域入侵检测等算法作为数据集。数据集中包括牛只行走,站立,进食,饮水等不同类型的数据

18g牛只数据&#xff0c;适用于多种图像识别&#xff0c;目标检测&#xff0c;区域入侵检测等算法作为数据集。 数据集中包括牛只行走&#xff0c;站立&#xff0c;进食&#xff0c;饮水等不同类型的数据&#xff0c;可以用于行为检测 数据集中包含多种不同种类的牛只&#xff…

Eking管理易 Html5Upload 前台任意文件上传漏洞复现

0x01 产品描述&#xff1a; ‌Eking管理易是一款专为广告制品制作企业量身定制的管理软件产品&#xff0c;旨在帮助企业实现规范化、科学化管理&#xff0c;提升运营效率和降低运营成本。‌ 该软件由广州易凯软件技术有限公司开发&#xff0c;基于JAVA企业版技术研发&#xff0…

CSS 入门

1. CSS 1.1 概念 CSS&#xff08;Cascading Style Sheet&#xff09;&#xff0c;层叠样式表&#xff0c;用于控制页面的样式 CSS 能够对网页中元素位置的排版进行像素级精确控制&#xff0c;实现美化页面的效果&#xff0c;能够做到页面的样式和结构分离&#xff08;类似于…

Wi-Fi数据帧类别

网络中传送的业务数据对服务质量&#xff08;QualityofService&#xff0c;QoS&#xff09;有不同的要求&#xff0c;例如语音业务需要实时被传送&#xff0c;它对时延的大小很敏感。当W-Fi MAC层在同时传输语音业务和普通业务的数据时&#xff0c;语音业务就需要被高优先级发送…

当下的时代?

我这两天刚接触一个人,错误之皇,每做一件小事的时候他都像救命稻草一样抓着,有一天我一看,嚯,好家伙,他抱着的是已经让我仰望的参天大树了! 这个时代需要我们从无限思维的视角和做法去努力&#xff1b;它不取决于我们现在有多少&#xff0c;而取决于我们未来的成长幅度是多少&a…

动态规划算法专题(七):两个数组的dp问题

目录 1、最长公共子序列 1.1 算法原理 1.2 算法代码 2、不相交的线 2.1 算法原理 2.2 算法代码 3、不同的子序列 3.1 算法原理 3.2 算法代码 4、通配符匹配&#xff08;hard ★★★&#xff09; 4.1 算法原理 4.2 算法代码 5、正则表达式匹配&#xff08;hard ★…

Vue-admin-box后台管理框架

文章目录 1、项目概述2、技术栈3、 特色功能4、基础模板5、 项目演示6、 源码地址7、 演示地址8、小结Vue-Admin-Box,一款精心打造的Vue.js后台管理模板,旨在为开发者提供高效、美观且易于扩展的后台解决方案。它集成了现代Web开发的最佳实践,包括响应式设计、模块化开发、丰…

服务器数据恢复—服务器宕机导致挂载的V7000存储文件系统损坏的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台挂载在Windows server服务器上的v7000存储。存储空间划分了一个分区&#xff0c;采用NTFS文件系统&#xff0c;存放oracle数据库。 服务器存储故障&#xff1a; 服务器在运行过程中宕机&#xff0c;于是管理员重启服务器。服务器进入系…

针对珠宝,手表等配饰的高保真虚拟试穿解决方案IDM-VTON

今天给大家介绍一种针对配饰的高保真虚拟试穿解决方案IDM-VTON&#xff0c;该方案旨在填补当前虚拟试穿技术在高端配饰&#xff08;如珠宝和手表&#xff09;领域的空白。现有的虚拟试穿模型主要集中在服装上&#xff0c;IDM-VTON结合了2D虚拟试穿技术与其他计算机视觉模型&…

N1安装grafana

apt-get install -y adduser libfontconfig1 musl wget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.0.10_arm64.debdpkg -i grafana-enterprise_10.0.10_arm64.debsystemctl daemon-reload systemctl enable grafana.service --now ip:3000 默认密码…

[Linux] 层层深入理解文件系统——(3)磁盘组织存储的文件

标题&#xff1a;[Linux] 层层深入理解文件系统——&#xff08;3&#xff09;磁盘组织组织存储的文件 个人主页水墨不写bug 目录 一、磁盘中的文件 1&#xff09;磁盘的物理结构 2&#xff09;磁盘的CHS寻址法 3&#xff09;磁盘的空间管理 二、磁盘如何组织存储文件 三…

止步阿里一面。。。

时间过的真快&#xff0c;转眼间国庆已经过去一周了&#xff0c;又到了新的一周&#xff0c;继续分享最新的面经。 今天分享的是粉丝在阿里巴巴的一面&#xff0c;考察了数据库、redis、kafka、ES和项目&#xff0c;数据库和redis不用多说&#xff0c;项目必用面试必考&#x…

【隐私计算篇】替换半同态使用全同态加速计算联邦机器学习算法的实证分析

1. 背景介绍 联邦学习&#xff08;Federated Learning&#xff0c;FL&#xff09;是隐私计算中常见的一种技术范式&#xff0c;其本质是一种面向可信数据流通的分布式机器学习框架&#xff0c;允许多个参与方在不共享其本地数据的前提下&#xff0c;协同训练机器学习模型。与传…

Python | Leetcode Python题解之第479题最大回文数乘积

题目&#xff1a; 题解&#xff1a; class Solution:def largestPalindrome(self, n: int) -> int:if n 1:return 9upper 10 ** n - 1for left in range(upper, upper // 10, -1): # 枚举回文数的左半部分p, x left, leftwhile x:p p * 10 x % 10 # 翻转左半部分到其…

【C语言刷力扣】1748.唯一元素的和

题目&#xff1a; 法一 解题思路&#xff1a; 由于 nums.length 小于100&#xff0c;新建数组 num[101]&#xff0c;用来遍历存放 nums[i]出现的次数。 int sumOfUnique(int* nums, int numsSize) {int result 0;int num[101] {0}; // memset(num, 0, sizof(num));for (int…

写一个菜谱网站,数据库应该怎么设计?AI回答我动手!

大部分问题使用chatglm4-9b进行回答&#xff0c;总体效果不错&#xff0c;大家可以来试试。关于如何使用ChatGLM4-9b模型&#xff0c;可以参考&#xff1a;在启智AI平台实践ChatGLM4-9B聊天机器人MindSpore-CSDN博客 设计数据库 问题 写一个菜谱网站&#xff0c;数据库应该怎…

mongodb-7.0.14分片副本集超详细部署

mongodb介绍&#xff1a; 是最常用的nosql数据库&#xff0c;在数据库排名中已经上升到了前六。这篇文章介绍如何搭建高可用的mongodb&#xff08;分片副本&#xff09;集群。 环境准备 系统系统 BC 21.10 三台服务器&#xff1a;192.168.123.247/248/249 安装包&#xff1a…

STM32L010F4 最小系统设计

画一个 STM32L010F4 的测试板子...... by 矜辰所致前言 最近需要用到一个新的 MCU&#xff1a; STM32L010F4 &#xff0c;上次测试的 VL53L0X 需要移植到这个芯片上&#xff0c;网上一搜 STM32L010F4&#xff0c;都是介绍资料&#xff0c;没有最小系统&#xff0c;使用说明等。…