如何发包到中央仓库-完整教程
相信很多小伙伴自己都会有一些包,我们可以将包发布中央仓库,然后直接通过maven来使用这些包,下面就整理下如何将包发到中央仓库。
新建项目
第一步,我们需要在sonatype上注册一个账号,这一步就不再演示了。
注册好账户之后,然后我们来创建项目。点击新建按钮,问题类型 选择 New Project,如下所示:
在该页面中,注意需要添加groupId,项目的描述信息等,填写完毕后进行保存。用过jira的同学对这个系统肯定十分熟悉,因为就是jira。
注意如果groupId以前没有在这个上面使用过,那么第一次使用需进行注册,然后才可以发包,新建好的项目会收到以下评论:
翻译过来有以下几点:
如果你有自己的域名,groupId就可以是将域名反转过来的,比如fun.mingshan
,那么你可以:
- 在你的域名添加一条DNS解析,需要是TXT 类型的,指向当前创建的issue
- 重新打开这个一条issue
如果你没有自己的域名,那么你可以:
- 使用github这种开放的域名,不过需要创建一个仓库来验证github账户的权限
大概是这样,我选用有域名添加一条DNS解析这种操作,十分快捷。DNS解析规则如下:
上面的操作完,等issue的状态变为已解决时,会收到一条评论:
我们接下来就可以将包发送到中央仓库了。
更新pom.xml文件
增加开源协议,坐着,SCM信息等,具体信息可以参考:
<groupId>fun.mingshan</groupId> <artifactId>markdown4j</artifactId> <version>1.0-SNAPSHOT</version> <name>markdown4j</name> <description>To solve the problem of not quickly generating Markdown files at the Java level, using builder mode, very simple to use.</description> <url>https://github.com/mstao/markdown4j</url> <licenses> <license> <name>Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <developers> <developer> <name>Walker Han</name> <email>walkerhan@126.com</email> </developer> </developers> <issueManagement> <system>Github Issue</system> <url>https://github.com/mstao/markdown4j/issues</url> </issueManagement> <scm> <connection>scm:git:https://github.com/mstao/markdown4j.git</connection> <developerConnection>scm:git:https://github.com/mstao/markdown4j.git</developerConnection> <url>https://github.com/mstao/markdown4j</url> <tag>${project.version}</tag> </scm> <inceptionYear>2022</inceptionYear>
增加插件:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18.1</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> <plugin> <artifactId>maven-source-plugin</artifactId> <version>2.4</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> </plugin> <!-- Javadoc --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> <configuration> <!-- jdk1.8要加上,1.7要去掉,否则会报错 --> <additionalJOptions> <additionalJOption>-Xdoclint:none</additionalJOption> </additionalJOptions> </configuration> </plugin> <!-- Gpg Signature --> <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>
增加distributionManagement:
<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>
更新maven settings.xml文件
<settings> <servers> <server> <id>ossrh</id> <username>your-jira-id</username> <password>your-jira-pwd</password> </server> </servers> </settings>
配置PGP公匙信息
Windows下使用gpg4win来进行配置。下载地址 https://www.gpg4win.org/get-gpg4win.html。
下载安装完后,打开命令行执行:gpg --gen-key
,来生成公匙信息,注意此步需要输入sonatype 网站上的用户名,邮箱信息,必须保持一致。如下所示:
生成的过程中,会有个弹框要求输入Passphase信息,这个是密钥的密码,同样需要记牢。十分重要,后续在进行发布包的时候要用到的,如下:
上面操作完之后,会生成公匙,需要将公钥发布到 PGP 密钥服务器,两个密钥服务器都发布一下:
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 公钥ID gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 公钥ID
查询公钥是否发布成功
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 公钥ID gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 公钥ID
使用 gpg --list-keys
命令查询配置好的公私钥信息
打包推送
使用mvn clean deploy
进行编译部署,会将当前SNAPSHOT包推送到OSS 里面,注意这一步需要用到Passphase。
发布RELEASE
大致流程:
Maven发布 -> Sonatype Close -> Sonatype Release
Maven发布
关于如何利用maven进行发布的操作,这里就不详细介绍了,可以参考另一篇文档: Maven发布RELEASE包到云效私有仓库并打TAG
主要有两步操作:mvn release:prepare
和 mvn release:perform
。
Sonatype Close
发布完正式RELEASE 后,此时会将正式包推送到 staging Repositories,进入oss.sonatype,选择你刚才发布的包,然后点击Close 按钮,会弹出确认框,如下所示:
Sonatype Release
Close 完之后,我们就可以进行Release了。点击Release按钮,需要等待一会,可以点击下边的Activity选项卡中查看状态。等待一会,会收到邮件,告诉你已经同步中央仓库了。
至此,流程已经走完了。同步到中央仓库的时间比较漫长,耐心等待即可。
加图标
另外,我们看到很多仓库都有很多图标,比如编译状态,中央仓库版本等,类似下面这种:
我们可以使用:https://shields.io/ 这个网站来生成,选择对应的项目生成就可以了。
参考
- https://central.sonatype.org/publish/publish-maven/
- https://www.cnblogs.com/songyz/p/11387978.html
- https://blog.csdn.net/pdsu161530247/article/details/105429597
title: 如何发包到中央仓库-完整教程
categories: Maven
tags: [Maven]
author: Mingshan
date: 2022-01-21
本文来自博客园,作者:mingshan,转载请注明原文链接:https://www.cnblogs.com/mingshan/p/17793547.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)