前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >将项目上传到 Maven 中央仓库(2023最新,巨详细)

将项目上传到 Maven 中央仓库(2023最新,巨详细)

原创
作者头像
co松柏
修改于 2023-05-12 03:11:29
修改于 2023-05-12 03:11:29
94400
代码可运行
举报
文章被收录于专栏:教程笔记教程笔记
运行总次数:0
代码可运行

Maven 中央仓库发包流程

官方文档:https://central.sonatype.org/publish/publish-maven/#a-complete-example-pom

整体流程

  1. 注册 Jira Software
  2. 新建问题
  3. 完成域名所有权的验证
  4. 配置 gpg 密钥
  5. 配置 setting.xml
  6. 配置 pom.xml
  7. 上传

具体操作

  1. 注册 Jira Software :https://issues.sonatype.org/secure/Dashboard.jspa

2. 新建申请

  • 前两个默认值没有必要改动
  • Group Id 填域名或 io.github.用户名(后续验证会验证域名或 GitHub 账号的所有权)
  • Project URL 和 SCM url 按照实例填
  • Username(s) 指能够向这个 Group Id 发包的 jira 用户

3. 查看新建的申请并等待审核(一般5-10分钟)

然后官方的机器人会给一个评论让我们完成验证

根据评论的提示,如果我们的 Group Id 是域名,则需要给域名添加一条解析记录;如果是 GitHub 的话,则需要创建一个新的仓库来完成验证;做完之后将问题调整为开放状态等待审核(因为我这里是已经完成了,所以是已解决状态)

审核成功之后会有如下评论

4. 下载 GPG 工具,在命令行执行 gpg --gen-key 命令,按照指示生成密钥对。gpg --list-keys 命令可以查看已生成的密钥对。通过 gpg --keyserver keyserver.ubuntu.com --send-keys 公钥 命令将密钥对发到服务器,供后面验证使用

5. 配置 Maven 的 setting.xml 文件。在 servers 里添加一个 server 块,内容如下:

<server> <id>ossrh</id> <username>jira 账号</username> <password>jira 密码</password> </server>

6. 配置项目的 pom.xml 文件,这里主要是添加了一些插件,测试通过的示例 pom 文件如下。注意:包的 GAV 坐标里的 groupId 一定要跟上面在 jira 申请问题时填写的 Group Id 保持一致,否则无法上传成功

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
		<!--  包信息根据实际填写,groupId 一定要跟上面在 jira 申请问题时填写的 Group Id 保持一致,否则无法上传成功 -->
    <groupId>...</groupId>
    <artifactId>...</artifactId>
    <version>...</version>
    <name>...</name>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    </properties>
    <dependencies>
    	...
    </dependencies>


    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>ossrh</id>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>1.6.7</version>
                <extensions>true</extensions>
                <configuration>
                    <serverId>ossrh</serverId>
                    <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
                    <stagingProgressTimeoutMinutes>20</stagingProgressTimeoutMinutes>
                    <autoReleaseAfterClose>true</autoReleaseAfterClose>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <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>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <configuration>
                    <additionalOptions>
                        <additionalOption>-Xdoclint:none</additionalOption>
                    </additionalOptions>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
		<!-- 后面是开发者及项目信息,根据实际填写 -->
    <licenses>
        <license>
            <name>BSD 3-Clause</name>
            <url>https://spdx.org/licenses/BSD-3-Clause.html</url>
        </license>
    </licenses>
    <scm>
        <connection>...</connection>
        <url>...</url>
    </scm>
    <developers>
        <developer>
            <name>...</name>
            <email>...</email>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>+8</timezone>
        </developer>
    </developers>

</project>

7. 上传包

构建成功之后可以先查一下是否发布成功(用 jira 账号登录):https://s01.oss.sonatype.org/#stagingRepositories

成功之后在 jira 创建的问题里会有评论(会有一定延迟),如下图:

8. 到这里就完成了,接下来等着其他各大仓库自动同步(网上说4h,但我实际测试用了接近7h)就可以了。Maven 中央仓库首先可以查到(这个很快,半小时内就可以查到了),然后是我们熟知的https://mvnrepository.com/和其他仓库

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
发布jar包到maven中央仓库(无个人域名)
我们通常使用的Jar包,大多都是从镜像上拉取的,也有私人仓库,也有直接从Maven中央仓库拉取的,无论从镜像还是仓库,发布到中央仓库的jar包,都是可以直接拉取下来的。所以,当我们自己打包了一个jar包之后,打算开源出去装逼的时候,我们就可以将jar包发布到sonatype.org,这个地址看起来不是maven,但是发布上去之后,我们在mvnrepository.com和search.maven.org都可以看到自己的jar包了。
品茗IT
2019/09/12
1.5K0
发布jar包到maven中央仓库(无个人域名)
手把手教你把Java SDK发布到中央仓库
写了个Java SDK(ava Library),想要让更多的猿媛使用,如何发布到中央仓库(Maven Central)呢?
许杨淼淼
2020/06/28
1.7K0
发布maven项目到中央仓库
用maven已经一段时间,有一些通用的可以开源的代码想放到公网的仓库中,以便可以随时使用。 注册Sonatype OSSRH 1:注册一个JIRA账号:https://issues.sonatype.
似水的流年
2019/12/05
7010
手把手教你提交Jar包到Maven公共仓库
在上一篇文章中,我介绍了自己的SpringBoot Starter项目,可以让我们使用注解的方式轻松地获取操作日志,并推送到指定数据源。
蛮三刀酱
2022/01/05
2.4K0
手把手教你提交Jar包到Maven公共仓库
上传一个jar到中央仓库
按照官方提示: https://central.sonatype.org/publish/release/ ; https://oss.sonatype.org/.这个网站将在2021-2月份过期;新的项目应该在https://s01.oss.sonatype.org/上面进行创建!!!
eeaters
2021/10/26
1K0
上传一个jar到中央仓库
如何上传自己的项目到Maven中央仓库
这段时间一直在做项目,也有一个项目伴随产品,其实也就是为了满足个人开发需求的一个工具类,然后想着为了便于协作开发,不如就放在Maven上,这篇文章主要介绍如何把自己的项目或者Starter上传到Maven中央仓库中,并且我也会在文章中说明坑点。
Karos
2023/02/01
2K0
如何上传自己的项目到Maven中央仓库
向maven中央仓库提交jar
从来都是从中央仓库下载jar,这次需要向中央仓库提交jar, 利用Sonatype OSSRH可以把jar等资源提交给Maven的中央仓库。
凯哥Java
2019/06/28
1.1K0
向maven中央仓库提交jar
Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库
Maven 中央仓库并不支持直接上传 jar 包,因此需要将 jar 包发布到一些指定的第三方 Maven 仓库,比如:Sonatype OSSRH 仓库,然后该仓库再将 jar 包同步到 Maven ,本文详细记录整个发布、同步过程。
NebulaGraph
2019/12/12
1.1K0
Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库
Maven 中央仓库提交Jar包全程指南
本文记录一下将jar上传到maven中央仓库的全过程,文中项目依托在github上,使用的是mac环境 (关于maven、jdk的环境配置不属于本文内容)
一灰灰blog
2020/12/03
1.1K0
我把自己的java库发布到了maven中央仓库,从此可以像Jackson、Spring的jar一样使用它了
关于maven中央仓库 作为一个java程序员,对maven中央仓库https://mvnrepository.com/自然是非常熟悉的,毕竟咱们的应用依赖的jar大部分都来自此处,如果您想把自己开发的java库也托管在上面,让大家像使用Jackson、Spring那样轻松简单的使用您的jar,就请随本文一起操作吧; 先看看效果,下图是我发布的java库在中央仓库的搜索结果: 前提条件 由于sonatype官方会要求您在github创建一个仓库(仓库名由sonatype官方指定,以此验证您是否有gith
程序员欣宸
2021/12/07
6470
我把自己的java库发布到了maven中央仓库,从此可以像Jackson、Spring的jar一样使用它了
jar包打入maven仓库中_maven打包引入外部jar包
我们知道,一个maven坐标由groupId,artifactId和version组成,后两者可以在pom中调整,而可以用在中央仓库的 groupId需要申请。由于 Maven 中央仓库由 sonatype 公司进行运营,所以我们首先需要注册一个sonatype账号,通过该账号去申请一个 groupId。
全栈程序员站长
2022/09/23
9900
jar包打入maven仓库中_maven打包引入外部jar包
记一次非Maven项目发布到中央仓库爬过的坑!
今天有朋友和我聊天说笔者已经有两天没有写文章了,都去干嘛了?我很无奈地回答说被maven弄自闭了。到底是什么样的问题导致我花了这么长时间去解决一个问题?这篇文章告诉你。
beifengtz
2019/06/03
1.7K0
记一次非Maven项目发布到中央仓库爬过的坑!
将jar包发布到maven的中央仓库细节整理
在学习springboot框架的时候,会引入各种各样的starter依赖,照着教程尝试写了个demo-spring-boot-stater,可以理解为一个组件,随引随用
陈灬大灬海
2019/10/16
1.9K0
一文读懂jar上传至Maven中央仓库
一、背景概述二、sonatype配置三、GPG验证配置四、上传&发布jar包五、总结
叔牙
2024/06/26
1.2K0
一文读懂jar上传至Maven中央仓库
关于把自己的Jar包开源到Maven仓库的问题
首先要做的是申请上传资格,就是要在sonatype平台上进行申请。注册成功后,登录,然后会提示选择语言,这个时候就可以选择中文了,下文截图均为中文页面。
全栈开发日记
2022/05/13
7790
关于把自己的Jar包开源到Maven仓库的问题
如何发布自己的项目到Maven中央仓库?
在Maven项目中,90%以上的jar包是通过pom文件直接从开源仓库中获取依赖jar包文件,然后在项目中进行集成使用。
程序新视界
2020/07/29
5.8K1
如何发布自己的项目到Maven中央仓库?
我把DDD脚手架,发布到了Maven仓库,大家都能用了!
这篇文章将帮助粉丝伙伴们更高效地利用小傅哥构建的DDD(领域驱动设计)脚手架,搭建工程项目,增强使用的便捷性。让👬🏻兄弟们直接在 IntelliJ IDEA 配置个在线的链接,就能直接用上这款脚手架!—— 你就说猛不猛!🤨
小傅哥
2024/03/13
4200
我把DDD脚手架,发布到了Maven仓库,大家都能用了!
maven打包配置
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" x
IT云清
2021/12/06
5760
发布maven项目至中央仓库终极教程与疑难问题汇总解决帖
最近写了个maven项目想要打包上传到maven中央仓库方便开源调用,网上教程看了不少,坑也填了不少,在这里做一个详细的教程,让大家少花时间,快速高效的完成项目打包上传。
code2roc
2023/07/19
5580
发布maven项目至中央仓库终极教程与疑难问题汇总解决帖
Maven - Maven 核心概念一网打尽:轻松掌握项目构建与管理技巧
Maven 中引入了仓库的概念,开发人员将所编写的 JAR 按照相应格式推送到仓库中。
小小工匠
2023/08/16
3660
Maven - Maven 核心概念一网打尽:轻松掌握项目构建与管理技巧
推荐阅读
相关推荐
发布jar包到maven中央仓库(无个人域名)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验