Java Maven项目推送到 Maven 中央仓库

准备阶段

namespace 域名认证

当需要在 sonatype 认证 com.xxx命名空间时,需要将 @.xxx.com 配置域名解析。

记录类型:TXT

文本内容:验证的 key。

file

file

GPG 公私钥生成

GPG 下载地址:https://www.gnupg.org/download/index.html

Mac 可以使用 brew install gpg直接安装

使用方式可参考:

  • https://central.sonatype.org/publish/requirements/gpg/
  • https://www.jianshu.com/p/7f19ceacf57c

生成证书

$ gpg --gen-key

file

file

查询证书

$ gpg --list-keys 
gpg: 正在检查信任度数据库
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: 深度:0  有效性:  1  已签名:  0  信任度:0-,0q,0n,0m,0f,1u
gpg: 下次信任度数据库检查将于 2027-04-06 进行
[keyboxd]
---------
pub   ed25519 2024-04-06 [SC] [有效至:2027-04-06]ABC
uid             [ 绝对 ] xxx <xxx@163.com>
sub   cv25519 2024-04-06 [E] [有效至:2027-04-06]

上传公钥到公钥管理服务器

$ gpg --keyserver keyserver.ubuntu.com --send-keys ABC
gpg: 正在发送密钥 ABC 到 hkp://keyserver.ubuntu.com

如果报错 gpg: keyserver send failed: No route to host可以参考该文章上传公钥:https://vayne.cc/2022/03/13/gpg/

推送阶段

pom.xml 文件配置

配置 url

    <url>https://github.com/xxx/yyy</url>

配置 license

    <licenses><license><name>The Apache Software License, Version 2.0</name><url>http://www.apache.org/licenses/LICENSE-2.0.txt</url><distribution>repo</distribution></license></licenses>

配置 issueManagement

    <issueManagement><system>github</system><url>https://github.com/xxx/yyy/issues</url></issueManagement>

配置 SCM

    <scm><connection>scm:git:https://github.com/xxx/yyy.git</connection><developerConnection>scm:git:https://github.com/xxx/yyy.git</developerConnection><url>https://github.com/xxx/yyy</url></scm>

配置开发者信息

    <developers><developer><name>xxx</name><email>xxx@zzz.com</email><url>https://github.com/xxx</url></developer></developers>

通用插件配置

    <build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>flatten-maven-plugin</artifactId><version>1.5.0</version><configuration><updatePomFile>true</updatePomFile><flattenMode>oss</flattenMode></configuration><executions><execution><id>flatten</id><phase>process-resources</phase><goals><goal>flatten</goal></goals></execution><execution><id>flatten.clean</id><phase>clean</phase><goals><goal>clean</goal></goals></execution></executions></plugin><!-- 不上传源代码,删除该插件 --><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.1.0</version><inherited>true</inherited><executions><execution><id>bundle-sources</id><phase>package</phase><goals><goal>jar</goal></goals></execution></executions><configuration><maxmemory>1024</maxmemory><encoding>UTF-8</encoding><show>protected</show><notree>true</notree><!-- Avoid running into Java 8's very restrictive doclint issues --><failOnError>false</failOnError><doclint>none</doclint></configuration></plugin></plugins></build>

Maven 上传插件配置

    <profiles><profile><id>release</id><build><plugins><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><configuration><gpgArguments><!--表示密码直接输入,不需要弹出密码框--><arg>--pinentry-mode</arg><arg>loopback</arg></gpgArguments></configuration></plugin><!-- 配置方式:https://central.sonatype.org/publish/publish-portal-maven/#deploymentname --><plugin><groupId>org.sonatype.central</groupId><artifactId>central-publishing-maven-plugin</artifactId><version>0.4.0</version><extensions>true</extensions><configuration><publishingServerId>central</publishingServerId><tokenAuth>true</tokenAuth><autoPublish>true</autoPublish><excludeArtifacts><excludeArtifact>xxx-yyy</excludeArtifact></excludeArtifacts></configuration></plugin></plugins></build></profile></profiles>

settings.xml 文件配置

  <servers><server><id>central</id><username>xxx</username><password>yyy</password></server></servers><profiles><profile><id>gpg</id><activation><activeByDefault>true</activeByDefault></activation><properties><gpg.executable>gpg</gpg.executable><gpg.keyname>xxx@zzz.com</gpg.keyname><gpg.passphrase>passphrase</gpg.passphrase><gpg.useagent>true</gpg.useagent></properties></profile></profiles>

执行构建并上传

$ mvn clean deploy -Prelease 

上传结果

file

报错参考

  • Javadocs must be provided but not found in entries:需要提供 Javadoc
  • License information is missing:需要提供 license 信息
  • Project URL is not defined:需要定义项目 URL 信息
  • SCM URL is not defined:需要定义 SCM 信息
  • version cannot be a SNAPSHOT:Maven 中央仓库不支持推送快照版本

参考文档

  • https://central.sonatype.org/publish/publish-portal-maven/
  • https://central.sonatype.org/publish/requirements/gpg/
  • https://www.gnupg.org/download/index.html
  • https://www.jianshu.com/p/7f19ceacf57c

分享并记录所学所见

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

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

相关文章

模型微调与迁移学习:实现领域适应性评估

源自&#xff1a;大数据AI人工智能 作者&#xff1a;禅与计算机程序设计艺术 “人工智能技术与咨询” 发布 1. 背景介绍 1.1 机器学习的挑战 在机器学习领域&#xff0c;我们通常面临着许多挑战&#xff0c;如数据量不足、数据不平衡、模型泛化能力不足等。为了解决这些问…

Python 数学应用(四)

原文&#xff1a;zh.annas-archive.org/md5/123a7612a4e578f6816d36f968cfec22 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十一章&#xff1a;其他主题 在本章中&#xff0c;我们将讨论一些在本书前几章中没有涉及的主题。这些主题大多涉及不同的计算方式以及优…

python 列表对象函数

对象函数必须通过一个对象调用。 列表名.函数名() append() 将某一个元素对象添加在列表的表尾 如果添加的是其他的序列&#xff0c;该序列也会被看成是一个数据对象 count() 统计列表当中 某一个元素出现的次数 extend() 在当前列表中 将传入的其他序列的元素添加在表尾…

13个Java基础面试题

Hi&#xff0c;大家好&#xff0c;我是王二蛋。 金三银四求职季&#xff0c;特地为大家整理出13个 Java 基础面试题&#xff0c;希望能为正在准备或即将参与面试的小伙伴们提供些许帮助。 后续还会整理关于线程、IO、JUC等Java相关面试题&#xff0c;敬请各位持续关注。 这1…

重磅!国内首个基于单张图片的3D人脸重建课程

3D人脸重建在计算机视觉和图形学中一直是一个经典且热门的研究方向&#xff0c;在游戏、影视、娱乐等众多行业也有着广泛的应用。早期人脸重建主要基于多视角相机或深度相机&#xff0c;随着深度学习的兴起&#xff0c;基于单张图片的人脸重建成为可能&#xff0c;且重建的精度…

机器学习——模型评价

概述 在机器学习中&#xff0c;模型评价是评估和比较不同模型性能的关键步骤之一。它是通过对模型的预测结果与真实标签进行比较&#xff0c;从而量化模型的预测能力、泛化能力和稳定性。模型评价旨在选择最佳的模型&#xff0c;理解模型的行为&#xff0c;并为模型的改进提供…

创建k8s deploy yaml文件的imagePullSecrets语句

镜像仓库是harbor kubectl create secret docker-registry key --docker-server192.168.0.190 --docker-usernameadmin --docker-passwordHarbor12345

李沐41_物体检测和数据集——自学笔记

边缘框 1.一个边缘框可以通过4个数字定义&#xff08;左上xy&#xff0c;右上xy&#xff0c;左下xy&#xff0c;右下xy&#xff09; 2.标注成本高 目标检测数据集 1.每行表示一个物体&#xff08;图片文件名、物体类别、边缘框&#xff09; 2.COCO&#xff1a;80物体、330…

一次配置Docker环境的完整记录

一次配置Docker环境的完整记录 Docker环境搭建报错与解决报错一报错二报错三 Docker环境搭建 本节介绍了一次配置docker环境的完整记录&#xff1a; 编写Dockerfile文件&#xff1a; FROM pytorch/pytorch:1.10.0-cuda11.3-cudnn8-develRUN rm /etc/apt/sources.list.d/cuda.l…

vue3中单框双时间选择模式

在单框双时间选择下&#xff0c;给当前时间框赋值&#xff0c;可以使用vue中的v-model双向绑定方式 如前端元素代码&#xff1a; <el-form-item label"创建时间" style"width: 308px;"><el-date-pickerv-model"dateRange"value-forma…

浏览器工作原理与实践--HTTPS:让数据传输更安全

浏览器安全主要划分为三大块内容&#xff1a;页面安全、系统安全和网络安全。前面我们用四篇文章介绍了页面安全和系统安全&#xff0c;也聊了浏览器和Web开发者是如何应对各种类型的攻击&#xff0c;本文是我们专栏的最后一篇&#xff0c;我们就接着来聊聊网络安全协议HTTPS。…

数据结构速成--栈

由于是速成专题&#xff0c;因此内容不会十分全面&#xff0c;只会涵盖考试重点&#xff0c;各学校课程要求不同 &#xff0c;大家可以按照考纲复习&#xff0c;不全面的内容&#xff0c;可以看一下小编主页数据结构初阶的内容&#xff0c;找到对应专题详细学习一下。 目录 一…