公开Java框架开源到Maven中央仓库(避坑)

前言:
gpg下载地址:http://www.gnupg.org/download
安装勾选 kleopatra
下载完成验证 gpg --version

当时为了开源Java框架,真的是绞尽脑汁,耗费很多精力查了很多资料,躺了很多坑,最终的结果无不是以发布失败而告终,现在直接把我直接成功的例子给到大家,同时也带了一点私心,希望自己的开源越来越被多人看到使用和继续完善。
给出开源链接:https://github.com/fyupeng/rpc-netty-framework/

1. 生成秘钥

gpg --full-generate-key

连续敲三个空格后,输入y

记住Passphase,相当于一个密钥库的密码,用来鉴权是不是所有人在使用

最后保存起来,我一般保存到${user.home}/.gnupg,与秘钥存放位置放一起

这里注意一下,默认私钥和公钥会保存在C:\Users\${user_name}\AppData\Roaming\gnupg\目录中

而IDE会找到${user.home}/.gnupg该目录下,如果没有做任何操作,你生成的秘钥通过gpg --list-keys是找不到的

下面会详细给步骤

2. 查看秘钥

gpg --list-keys

获取key Id 来获取秘钥可以为 公钥后16位和8位,推荐16位

3. 发布公钥到公钥服务器

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys FD953A355469C8AA

无提示、无报错即可

4. 从公钥服务器获取公钥

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys FD953A355469C8AA
gpg: key 12E2CADABE0D891E: "fyupeng <1160886967@qq.com>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

5. 获取公钥列表

C:\Users\fyp01>gpg --list-keys
C:\Users\fyp01\AppData\Roaming\gnupg\pubring.kbx
------------------------------------------------
pub   ed25519 2022-08-20 [SC] [expires: 2024-08-19]76591F10A73649202490BA3812E2CADABE0D891E
uid           [ultimate] fyupeng <1160886967@qq.com>
sub   cv25519 2022-08-20 [E] [expires: 2024-08-19]

6. 打印公钥

gpg --armor --export FD953A355469C8AA

7. 打印私钥

gpg --list-secret-keys --keyid-format LONG

8. 发布异常

解决maven-javadoc-plugin报错 警告warning异常

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>2.9.1</version><configuration><aggregate>true</aggregate></configuration><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals><!-- 忽略警告异常 --><configuration><additionalOptions>-Xdoclint:none</additionalOptions></configuration></execution></executions>
</plugin>
  • 解决下面异常
gpg: skipped "FD953A355469C8AA": No secret key
gpg: signing failed: No secret key

将路径C:\Users\fyp01\AppData\Roaming\gnupg下的公钥和私钥复制到${user.home}/.gnupg目录中

  • 解决下面异常
gpg: invalid size of lockfile '/c/Users/fyp01/.gnupg/pubring.kbx.lock'
gpg: cannot read lockfile
gpg: can't lock '/c/Users/fyp01/.gnupg/pubring.kbx'
/c/Users/fyp01/.gnupg/pubring.kbx

删除${user.home}./gnupg目录下的所有.lock文件即可,自动生成的

  • 解决status405异常

也就是put失败,不支持Method的相关操作

确保deploy这个SNATSHOT测试版本后要先看是否校验通过,并且要去close,当然可以再继续release,否则不能发布正式版本

这样正式版本发布会找到已经发布了的测试版本,就给上传了

  • 解决status401异常

身份未校验,建议在buildplugin中都加入gpg校验,否则会报错,并且分开测试和正式校验

<distributionManagement><snapshotRepository><!-- 指定为测试版本仓库 --><id>sonatype-nexus-snapshots</id><url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url></snapshotRepository><!-- 指定为正式版本仓库 --><repository><id>sonatype-nexus-staging</id><url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url></repository>
</distributionManagement>

mavensetting.xml

<servers><server><id>sonatype-nexus-snapshots</id><!--名字表示用于快照库--><username>${your_sonatype_username}</username><password>${your_sonatype_password}</password></server><server><id>sonatype-nexus-staging</id><!--名字表示用于发布库--><username>${your_sonatype_username}</username><password>${your_sonatype_password}</password></server>
</servers>

而且发布正式要多一个依赖,主要用于发布,没有会报错

因为这个插件有属性autoReleaseAfterClose,在你手动关闭之后,再次发布会自动发布到相应的正式仓库中

<profiles><profile><id>release</id><build><plugins><plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>1.6.7</version><extensions>true</extensions><configuration><serverId>sonatype-nexus-staging</serverId><nexusUrl>https://s01.oss.sonatype.org/</nexusUrl><autoReleaseAfterClose>true</autoReleaseAfterClose></configuration></plugin></plugins></build></profile>
</profiles>

9. 发布测试

修改version加一个-SNAPSHOT

mvn clean deploy

10. 发布正式

修改version 不要加-SNAPSHOT

mvn clean deploy -P release

可以手动修改,也可以执行

mvn versions:set -DnewVersion=1.0.0

11. 完整pom文件

<?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>cn.fyupeng</groupId><artifactId>rpc-netty-framework</artifactId><packaging>pom</packaging><version>1.0.0</version><!-- 没有这一项close版本时会校验项目名失败 --><name>rpc-netty-framework</name><!-- 没有这一项close版本时会校验项目链接失败 --><url>https://github.com/fyupeng/rpc-netty-framework</url><description>基于Netty分布式微服务的RPC框架</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><netty.version>4.1.20.Final</netty.version></properties><modules><module>rpc-core</module><module>rpc-common</module></modules><dependencies><!-- 配置中心 nacos --><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>1.4.3</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion></exclusions></dependency></dependencies><licenses><license><name>The MIT License</name><url>https://github.com/fyupeng/rpc-netty-framework/blob/main/LICENCE</url></license></licenses><developers><developer><name>fyupeng</name><email>fyp010311@126.com</email></developer></developers><scm><connection>scm:git:https://github.com/fyupeng/rpc-netty-framework.git</connection><developerConnection>scm:git:https://github.com/fyupeng/rpc-netty-framework.git</developerConnection><url>https://github.com/fyupeng/rpc-netty-framework</url></scm><distributionManagement><snapshotRepository><!-- 指定为测试版本仓库 --><id>sonatype-nexus-snapshots</id><url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url></snapshotRepository><!-- 指定为正式版本仓库 --><repository><id>sonatype-nexus-staging</id><url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url></repository></distributionManagement><build><finalName>rpc-netty-framework</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!--打包源代码--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><executions><execution><id>attach-sources</id><goals><goal>jar-no-fork</goal></goals></execution></executions></plugin><!--生成javadoc--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals><!-- 忽略警告异常 --><configuration><additionalOptions>-Xdoclint:none</additionalOptions></configuration></execution></executions></plugin><!--获取本地私钥签名--><!-- 发布测试版没有这一项 close 版本时会校验签名失败 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>1.5</version><executions><execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions></plugin></plugins></build><profiles><profile><id>jdk-18</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile><profile><id>release</id><build><plugins><plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>1.6.7</version><extensions>true</extensions><configuration><serverId>sonatype-nexus-staging</serverId><nexusUrl>https://s01.oss.sonatype.org/</nexusUrl><autoReleaseAfterClose>true</autoReleaseAfterClose></configuration></plugin><!-- 发布正式版没有这一项 close 版本时会校验签名失败 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-gpg-plugin</artifactId><version>1.5</version><executions><execution><id>sign-artifacts</id><phase>verify</phase><goals><goal>sign</goal></goals></execution></executions></plugin></plugins></build></profile></profiles></project>

maven目录中setting.xml配置

<servers><server><id>sonatype-nexus-snapshots</id><!--名字表示用于快照库--><username>${your_sonatype_username}</username><password>${your_sonatype_password}</password></server><server><id>sonatype-nexus-staging</id><!--名字表示用于发布库--><username>${your_sonatype_username}</username><password>${your_sonatype_password}</password></server>
</servers>
<profile><id>ossrh</id><activation><activeByDefault>true</activeByDefault></activation><properties><!-- png public key 后 16位 --><gpg.keyname>${your_gpg_keyId}</gpg.keyname><gpg.executable>D:\software\GnuPG\bin\gpg</gpg.executable><gpg.passphrase>${your_gpg_passphrase}</gpg.passphrase></properties></profile>

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

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

相关文章

线程变量引发的session混乱问题

最近不是在救火&#xff0c;就是在救火的路上。 也没什么特别可写的&#xff0c;今天记录下最近遇到的一个问题&#xff0c;个人觉得挺有意思&#xff0c; 待有缘人阅读 言归正传&#xff0c;售后反馈&#xff1a; 营业查询中付款方式为第三方支付的几条银行缴费&#xff0c;创…

ai绘画Midjourney绘画提示词Prompt教程

一、Midjourney绘画工具 SparkAi【无需魔法使用】&#xff1a; SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧&#xff01;本系统使用NestjsVueTypescript框架技术&#xff0c;持续集成AI能力到…

成为AI产品经理——模型稳定性评估(PSI)

一、PSI作用 稳定性是指模型性能的稳定程度。 上线前需要进行模型的稳定性评估&#xff0c;是否达到上线标准。 上线后需要进行模型的稳定性的观测&#xff0c;判断模型是否需要迭代。 稳定度指标(population stability index ,PSI)。通过PSI指标&#xff0c;我们可以获得不…

chatgpt、百度、讯飞、阿里写一小段SQL对比

问题&#xff1a;有一张表pay&#xff0c;表中只有一个字段url&#xff0c;字段类型为text&#xff0c;没有其它字段。请写一段sql脚本&#xff0c;删除重复的url行记录&#xff0c;只保留一条记录。 通义千问的回答&#xff1a; DELETE FROM pay WHERE url IN (SELECT url F…

Windows使用Redis

Windows使用Redis 前言一、安装wsl2&#xff08;Windows Subsystem for Linux&#xff09;二、在wsl中下载并安装Redis一主二仆哨兵模式 前言 主要是记录一下&#xff0c;免得自己忘了。 一、安装wsl2&#xff08;Windows Subsystem for Linux&#xff09; Redis官网中说&…

GitHub上1.5K标星的QA和软件测试学习路线图

​最近在GitHub上发现一个项目&#xff0c;项目描述了作为QA工程师&#xff0c;进行软件测试技能提升时的&#xff0c;建议的软件测试学习顺序图​。 虽然2021年起就不再更新了&#xff0c;但是居然有1.5K的​星。 整个项目有两个部分​&#xff1a; ​1.QA和软件测试学习顺序…

嵌入式面试题

1. new和malloc 做嵌入式&#xff0c;对于内存是十分在意的&#xff0c;因为可用内存有限&#xff0c;所以嵌入式笔试面试题目&#xff0c;内存的题目高频。 1&#xff09;malloc和free是c/c语言的库函数&#xff0c;需要头文件支持stdlib.h&#xff1b;new和delete是C的关键…

craco + webpack 4 升 5

craco webpack 4 升 5 更新包版本尝试build升级其他依赖库使用process插件打印进度信息到底需要多少内存分析构建产出添加 splitChunk总结记录一些好文章&#xff1a; 我的项目使用 craco react 开发 我的 package.json {// ......"dependencies": {"ant-desi…

沐风老师3DMAX拼图随机生成器Puzzle建模工具使用教程

3DMAX拼图随机生成器Puzzle建模工具使用教程 3DMAX拼图随机生成器Puzzle&#xff0c;是一款用MAXScript脚本语言开发的3dsMax小工具&#xff0c;可以随机创建可编辑多边形3D拼图对象。可批量生成阵列。 【适用版本】 3dMax2015-2024&#xff08;不仅限于此范围&#xff09; 【…

[算法思考记录]力扣1094.拼车JavaScript

Problem: 1094. 拼车 相当于在一条路上开车&#xff0c;乘客在某个时间点上车&#xff0c;他们会影响在下车之前的路程的车载人数。 很明显这是差分的做法&#xff0c;只要把行车的路程抽象成一个差分数组&#xff0c;把上下车抽象成区间更改&#xff0c;一切都变得简单 Code…

前端大文件上传webuploader(react + umi)

使用WebUploader还可以批量上传文件、支持缩略图等等众多参数选项可设置&#xff0c;以及多个事件方法可调用&#xff0c;你可以随心所欲的定制你要的上传组件。 分片上传 1.什么是分片上传 分片上传&#xff0c;就是将所要上传的文件&#xff0c;按照一定的大小&#xff0c;将…

Langchain-Chatchat的安装过程

参考&#xff1a;LLMs之RAG&#xff1a;LangChain-Chatchat(一款中文友好的全流程本地知识库问答应用)的简介(支持 FastChat 接入的ChatGLM-2/LLaMA-2等多款主流LLMs多款embe_一个处女座的程序猿的博客-CSDN博客 1、安装过程中出现了 GPU驱动版本 是11.8 而 python -c "…

探索人工智能领域——每日20个名词详解【day8】

目录 前言 正文 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请事先与我联系以…

学习使用三个命令实现在腾讯云服务器TencentOS Server 3.1或者CentOS 8上安装ffmpeg

学习使用三个命令实现在腾讯云服务器TencentOS Server 3.1或者CentOS 8上安装ffmpeg Error: Unable to find a match: ffmpeg添加RPMfusion仓库安装SDL安装ffmpeg执行命令测试 Error: Unable to find a match: ffmpeg 添加RPMfusion仓库 yum install https://download1.rpmfus…

Vue3动态表单

示例代码如下&#xff1a; // 引入需要的依赖包 import { ref, reactive } from vue; import { useForm } from /composables/useForm;// 定义表单数据模型 const formModel reactive({name: ,age: ,gender: , });// 使用自定义的useForm函数创建表单实例 const { register, …

[Java学习日记]多线程练习、线程池

目录 一.案例&#xff1a;五个人抢红包 二.案例&#xff1a;两个抽奖池抽奖 三.案例&#xff1a;两个抽奖池抽奖&#xff1a;获取线程运行的结果 四.线程池&#xff1a;用来存放线程&#xff0c;避免多次重复创建线程 五.自定义线程池 六.最大并行数与线程池大小 一.案例&…

Python核心编程之认识python中的数字

目录 一、数字类型 如何创建数值对象并用其赋值 (数字对象) 如何更新数字对象

PTA 7-237 特殊排序

输入一个整数n和n个各不相等的非负整数&#xff0c;将这些整数从小到大进行排序&#xff0c;要求奇数在前&#xff0c;偶数在后。 输入格式: 首先输入一个正整数T&#xff0c;表示测试数据的组数&#xff0c;然后是T组测试数据。每组测试先输入一个整数n(1<n<100)&…

记录33333

如果您在一台从服务器上将 backend_flag0 设置为 DISALLOW_TO_FAILOVER&#xff0c;则意味着这台从服务器不会接管主服务器的角色&#xff0c;即不会成为新的主服务器&#xff0c;也不会参与故障切换。这种配置可能会影响环境的高可用性和故障恢复。以下是一个示例以更好地理解…

三端多人游戏冰雪搭建教程

--------------------------------------------------------------------------------------------------- CENTOS7系列 --------------------------------------------------------------------------------------------------- 安装宝塔 yum install -y wget && …