文章目录

  • 注册账号
  • GPG 安装
    • 安装
    • 生成密钥
    • 上传公钥
  • Maven配置
  • 上传到Maven仓库
    • 修改项目的配置,填写基本信息
    • 执行编译命令
    • 登录网站配置发布
    • 项目中应用
  • 遇到的问题解决方法

本文将介绍如何将自己的jar包发布至公共的中央仓库,通过maven方式进行引用

注册账号

注册地址
https://issues.sonatype.org/secure/Signup!default.jspa
填写基础信息

这里我使用gitee做提交,网络不太好连GitHub有些卡,逻辑是一样的。
点击创建

填入相关信息


填写信息说明:

字段 填写内容
Summary 概要(写jar包是做什么用的,可以中文)
Description 描述(详细描述jar包是做什么用的,可以与Summary相同,可以中文)
Group Id e.g. com.gitee.jast (这里使用gitee做demo)
Project URL e.g. https://gitee.com/jastee/jast-tool
SCM url e.g. https://gitee.com/jastee/jast-tool.git
Proejct 选择 Community Support - Open Source Project Repository Hosting (OSSRH)
Issue Type 选择 New Project

填写完成点击create创建

提交完成之后状态为开放

英文版如下,后续用英文版进行介绍

然后等待官方人员审核,随后官方人员回复让我们在gitee上创建一个空项目验证该gitee是自己的账号。(期间很尴尬,我创建完了项目没设置公开权限,自己能访问他不能访问,我就一直问他,他也不说啥原因,就让我创建空项目。。。)

当状态变成Status:RESOLVED则是可以发包了

GPG 安装

安装

brew install gpg
如果在线安装不了则可以直接下载(我是在线安装的) https://gpgtools.org/

生成密钥

# 根据提示输入用户名,邮箱,密码 要记住后面需要用
gpg --gen-key

查看生成的密钥

mac@Mac ~ % 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: 下次信任度数据库检查将于 2023-10-23 进行
/Users/mac/.gnupg/pubring.kbx
-----------------------------
pub   ed25519 2021-10-23 [SC] [有效至:2023-10-23]1D3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF325
uid             [ 绝对 ] jast <745925668@qq.com>
sub   sb11111 2021-10-23 [E] [有效至:2023-10-23]

1D3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF325(这里公钥为了演示我随便改了下,我实际的公钥不是这个,上传是要传实际的)这个就是公钥一会要上传到密钥服务器

上传公钥

mac@Mac ~ % gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 1D3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF325
gpg: 正在发送密钥 AAAAAAAAAAAAAAAAAAAF325 到 hkp://keyserver.ubuntu.com:11371

查看上传的公钥

# 网络原因可能会接收失败,多执行两次可以查看到成功
mac@Mac ~ % gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 1D3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF325
gpg: 从公钥服务器接收失败:No data
mac@Mac ~ % gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 1D3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF325
gpg: 密钥 D1BC8A428AA3F325:“jast <745925668@qq.com>” 未改变
gpg: 处理的总数:1
gpg:              未改变:1

Maven配置

在Maven的setting.xml中添加账号信息

  <server> <id>ossrh</id><username>第一步注册的账号</username><password>第一步注册账号的密码</password></server>

上传到Maven仓库

修改项目的配置,填写基本信息

Java项目中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>com.gitee.jastee</groupId><artifactId>jast-tool</artifactId><version>0.0.2</version><name>jast-tool</name><description>Java 工具</description><url>https://gitee.com/jastee/jast-tool</url><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><system>gitee</system><url>https://gitee.com/jastee/jast-tool/issues</url></issueManagement><scm><connection>scm:git:https://gitee.com/jastee/jast-tool.git</connection><developerConnection>scm:git:https://gitee.com/jastee/jast-tool.git</developerConnection><url>https://gitee.com/jastee/jast-tool</url></scm><developers><developer><name>Jast</name><email>745925668@qq.com</email><url>https://gitee.com/jastee</url></developer></developers><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><distributionManagement><repository><id>ossrh</id>
<!--            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>--><url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url></repository><snapshotRepository><id>ossrh</id>
<!--            <url>https://oss.sonatype.org/content/repositories/snapshots</url>--><url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url></snapshotRepository></distributionManagement><build><pluginManagement><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-release-plugin</artifactId><configuration><mavenExecutorId>forked-path</mavenExecutorId><useReleaseProfile>false</useReleaseProfile><arguments>-Psonatype-oss-release</arguments></configuration></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.0.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></pluginManagement><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>cobertura-maven-plugin</artifactId><version>2.7</version><configuration><formats><format>html</format><format>xml</format></formats><check/></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.1.0</version><configuration><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId></plugin></plugins></build><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></plugin></plugins></build></profile></profiles></project>

执行编译命令

编译过程中需要输入之前我们密钥的密码

> mvn clean deploy -DskipTests=true -P release
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  50.101 s
[INFO] Finished at: 2021-10-24T10:15:54+08:00
[INFO] ------------------------------------------------------------------------

可能会遇到的问题问题

打包上传报错

mvn clean deploy -DskipTests=true -P release
gpg: 签名时失败: Inappropriate ioctl for device
gpg: signing failed: Inappropriate ioctl for device

解决方法:
设置环境变量

export GPG_TTY=$(tty)

重新执行mvn clean deploy -DskipTests=true -P release会弹出一个密码输入界面,输入我们之前设置密钥的密码即可

登录网站配置发布

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

点击 Staging Repositories -> 勾选我们要发布的jar包 -> 点击Close


提交完稍等一会刷新就可以看到提示statusclosed,可以进行下一步

点击release

搜索我们发布的Jar包

可以看到我们发布的Jar包,每个版本的包只能提交一次,不能重复提交到公共仓库
注意:这里不要发布成SNAPSHOT版本了

在中央仓库直接查看也可以看到我们传的jar包

项目中应用

加入依赖,进行下载,发现jar包成功下载

测试应用,可以正常使用

需要更新jar包时,我们修改版本号mvn clean deploy -DskipTests=true -P release然后提交到仓库发布,执行 closed -> release 即可。

上传完成后,我们可以直接在pom.xml中引用,在https://mvnrepository.com/ 搜索到需要等几个小时上传完不能直接看到。

至此我们上传到中央仓库成功。

遇到的问题解决方法

中间遇到了个小插曲
上传之后提示了三个错误

点击Activity查看

提示说少各种POM信息

Invalid POM: /com/gitee/jastee/jast-tool/0.0.1/jast-tool-0.0.1.pom: Project name missing, Project description missing, Project URL missing, License information missing

问题原因:
pom.xml中文件少配置了相关参数,配置一定要和我上面列的一样。

如何向Maven中央仓库提交自己的Jar包(发布自己的Jar包到中央仓库)相关推荐

  1. 向maven中央仓库提交jar

    从来都是从中央仓库下载jar,这次需要向中央仓库提交jar, 利用Sonatype OSSRH可以把jar等资源提交给Maven的中央仓库. Sonatype OSSRH介绍: Sonatype OS ...

  2. idea maven打jar包_Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库

    摘要 Maven 中央仓库并不支持直接上传 jar 包,因此需要将 jar 包发布到一些指定的第三方 Maven 仓库,比如:Sonatype OSSRH 仓库,然后该仓库再将 jar 包同步到 Ma ...

  3. 我把自己的java库发布到了maven中央仓库,从此可以像Jackson、Spring的jar一样使用它了

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于maven中央仓库 作为一个java程序员,对ma ...

  4. 发布个人项目jar包到maven中央仓库详解

    发布个人项目jar包到maven中央仓库详解 1.在sonatype提交发布工单(Issue) sonatype是由社区支持的开源项目托管服务(Open Source Project Reposito ...

  5. 如何将JAR包发布到Maven中央仓库?

    将jar包发布到Maven中央仓库(Maven Central Repository),这样所有的Java开发者都可以使用Maven直接导入依赖,例如fundebug-java: <!-- ht ...

  6. 发布/上传Jar包到Maven中央仓库 - 史上最详细

    发布 Jar 包到 Maven 中央仓库 在项目开发过程中,我们常常会使用 Maven / Gradle 从仓库拉取开源的第三方 jar 包,可能是私有仓库,可能是 Maven 中央仓库,也可能是第三 ...

  7. Maven公共中央仓库发布自己的Jar包

    Maven公共中央仓库发布自己的Jar包 流程概要 创建工单 配置环境和项目 发布jar包 一.创建工单 1. 注册账号 https://issues.sonatype.org/secure/Sign ...

  8. 如何吧本地仓库提交到github_解锁GitHub(5)之GitHub本地仓库使用

    同一系列文章: 千锋物联网学院:解锁GitHub(1)git和GitHub关系​zhuanlan.zhihu.com 千锋物联网学院:解锁GitHub(2)git工具的安装与配置​zhuanlan.z ...

  9. Maven 添加本地 jar 包、添加依赖 jar 文件到本地 Maven 仓库、引用本地 jar

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 把要用的jar放在固定位置: 2.打开CMD,进入到libs文件夹: 3.运行如下命令: mv ...

最新文章

  1. python 数据库查询结果邮件提醒_Python实现的查询mysql数据库并通过邮件发送信息功能...
  2. Java 12正式发布,新特性解读!
  3. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之创建用户界面
  4. Spark基础学习笔记07:搭建Spark HA集群
  5. 【AI自学】 完备的 AI 学习路线,最详细的资源整理!
  6. 发电机机房设计规范_柴油发电机的容量怎么选择!发电机机房如何合理设计?来涨知识!...
  7. 119 Python程序中的线程操作-线程同步
  8. Eclipse 项目导入 Android Studio 导致的乱码问题解决
  9. adc0832工作原理详解_adc0834工作原理及AD转换
  10. 排序—时间复杂度为O(n2)的三种排序算法
  11. (附源码)Node.js图书管理小程序 毕业设计 250858
  12. linux rtc与时钟
  13. 会议记录管理系统(6) - 查找会议记录模块设计
  14. 运营商开始悄悄火拼5G价格战,19元套餐开始涌现
  15. Is necessary to close fille in python?
  16. linux查询当前时间
  17. Matlab函数封装为DLL供Cpp调用
  18. Excel中countif函数统计“不等于”的条件
  19. 第七次全国人口普查公报[1](第八号) ——接受普查登记的港澳台居民和外籍人员情况
  20. 去掉最大值和最小值后求平均值的公式

热门文章

  1. 站长导航系统源码 二开优化 美观自动审核 自动获取网站信息
  2. element-vue 如何在文本框后添加文字
  3. 用devc++表白_邑大表白墙 第七季 第059期
  4. BNU4209:Triangle(求三角形内切圆圆心)
  5. 【Apache POI】Excel操作(三):Excel在浏览器端即Web端写入操作的实现
  6. 达观数据宣布获得由深创投领投的2.7亿元B+轮融资
  7. P40Pro鸿蒙ota升级,华为p40pro怎么升级鸿蒙系统_华为p40pro升级鸿蒙系统教程
  8. VMware Workstation Pro安装教程
  9. Linux网络编程——在线词典项目
  10. java中北大学ppt总结+课后习题第四章(小宇特详解)