一、注册jira账号

  访问如下网址: https://issues.sonatype.org/secure/Signup.jspa

记住邮箱,用户名,密码以备以后使用,一定牢记。

二、创建一个issue

1、创建issue

https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134

输入如下内容:

Summary: 项目说明,例如:Personal project
GroupID:就是pom.xml中的groupID,例如:com.gitee.rslai

Project URL:填写你的个人主页即可,例如:https://gitee.com/rslai

SCM url:跟Project URL写成一样即可。

2、等待Issue通过

  一般需要 1 ~ 2 天,审批通过后会发邮件通知,在提交的 Issue 下面会看到 Sonatype 工作人员的回复。

  他会问你是否是你自己的域名,你就回复是你所在组织的域名就行,例如:Yes,I’m themember of the organization with the domain ‘com.gitee.rslai’

3、等待Issue通过

  之后还要继续等待1~2天,成功后会收到邮件回复。

  收到如下内容代表审核通过。

三、提供GPG/PGP 的签名文件

1、安装 GnuPG

  访问 https://www.gnupg.org/download/ 下载gpg4win并安装。

2、生成 Key Pair 密钥对

  在cmd中输入如下命令生成Key Pair 密钥对

gpg --gen-key

  中间还要输入密码

  记住上图中的key,之后上传key还需要输入此key。

3、查看 Key Pair 密钥对(如果换机器就需要复制 pubring.kbx、trustdb.gpg文件)

gpg --list-keys

  

4、发布公钥到GPG key-servers

  Sonatype公司会在下面任意一个key-servers上进行搜索公钥,具体的key-servers 为:

http://pgp.mit.edu:11371
http://keyserver.ubuntu.com:11371
http://pool.sks-keyservers.net:11371

  所以随便添加到 keyserver.ubuntu.com,命令如下,其中send-keys就是“2、生成 Key Pair 密钥对”中的key

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

5、查看公钥

gpg -–keyserver hkp://keyserver.ubuntu.com:11371 -–recv-keys 8230XXXXXXXXD7337

四、修改pom.xml文件  

1、配置项目坐标 GAV

  groupId和你issue申请时填写相同

    <groupId>com.gitee.rslai.commons.http</groupId>
<artifactId>http</artifactId>
<version>1.0-SNAPSHOT</version>

2、项目名称、描述和URL

    <name>${project.groupId}:${project.artifactId}</name>
<description>A application used as an example on how to set up pushing
its components to the Central Repository.
</description>
<url>http://www.example.com/example-application</url>

3、License信息

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

  两个选一个即可

<licenses>
<license>
<name>MIT License</name>
<url>http://www.opensource.org/licenses/mit-license.php</url>
</license>
</licenses>

4、开发者信息

    <developers>
<developer>
<name>rslai</name>
<email>netlrs@163.com</email>
<organization>rslai</organization>
<organizationUrl>https://gitee.com/rslai</organizationUrl>
</developer>
</developers>

5、SCM信息

  svn服务器如下填写

<scm>
<connection>scm:svn:http://subversion.example.com/svn/project/trunk/</connection>
<developerConnection>scm:svn:https://subversion.example.com/svn/project/trunk/</developerConnection>
<url>http://subversion.example.com/svn/project/trunk/</url>
</scm>

  Git服务器GitHub如下填写

<scm>
<connection>scm:git:git://github.com/simpligility/ossrh-demo.git</connection>
<developerConnection>scm:git:ssh://github.com:simpligility/ossrh-demo.git</developerConnection>
<url>http://github.com/simpligility/ossrh-demo/tree/master</url>
</scm>

  Git服务器BitBucket如下填写

<scm>
<connection>scm:git:git://bitbucket.org/simpligility/ossrh-pipeline-demo.git</connection>
<developerConnection>scm:git:ssh://bitbucket.org:simpligility/ossrh-pipeline-demo.git</developerConnection>
<url>https://bitbucket.org/simpligility/ossrh-pipeline-demo/src</url>
</scm>

  Mercurial服务器BitBucket如下填写

<scm>
<connection>scm:hg:http://bitbucket.org/juven/hg-demo</connection>
<developerConnection>scm:hg:https://bitbucket.org/juven/hg-demo</developerConnection>
<url>http://bitbucket.org/juven/hg-demo</url>
</scm>

  Apache  Git服务器如下填写

<scm>
<connection>scm:git:https://git-wip-us.apache.org/repos/asf/maven.git</connection>
<developerConnection>scm:git:https://git-wip-us.apache.org/repos/asf/maven.git</developerConnection>
<url>https://github.com/apache/maven/tree/${project.scm.tag}</url>
<tag>master</tag>
</scm>

  码云Git服务器如下填写

    <scm>
<connection>scm:git:git@gitee.com:rslai/Http.git</connection>
<developerConnection>scm:git:ssh://gitee.com:rslai/Http.git</developerConnection>
<url>https://gitee.com/rslai/Http.git</url>
</scm>

6、配置分发管理服务器

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

  这就是上面你Issue通过后给你的地址

  

7、配置Profiles

  可以根据不同环境进行打包发布。

    <profiles>
<profile>
<id>release</id>
<build>
<!--...-->
<!--javadoc, source and gpg plugin from above-->
<!--...-->
</build>
</profile>
</profiles>

8、添加如下插件

  a)gpg签名插件,maven-gpg-plugin

  b)Nexus发布插件,nexus-staging-maven-plugin

  c)Sources插件,maven-source-plugin

  d)Javadoc插件,maven-javadoc-plugin

  如下:

    <build>
<plugins>
<!-- gpg sign Plugin -->
<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>
<!-- Nexus Staging Plugin -->
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.8</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<!-- Sources Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Javadoc Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

五、修改mvn的settings.xml文件

  打开settings.xml文件,一般在mvn安装目录或你指定的位置,例如:C:\apache-maven-3.5.0\conf

  找到servers段,将server内容copy进去

  <servers>
<server>
<id>ossrh</id>
<username>netlrs</username>
<password>qQTMC6d3ZRawtY0N%</password>
</server>
</servers>

  2、默认由于防火墙有时down不下来可以修改如下ali景象地址

  <mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>

六、发布到仓库

  进入cmd命令行,执行如下命令,发布过程中会要求输入密码输入“2、生成 Key Pair 密钥对”输入的密码即可

mvn clean deploy

  发布成功如下图

  https://oss.sonatype.org/content/repositories/snapshots/com/gitee/rslai/commons/http/http/ 这个地址就是发布后服务器地址

七、其它项目中引入此项目

  访问 https://oss.sonatype.org 网址,输入之前的groupId “com.gitee.rslai.commons.http” 找到maven配置如下,将其写入其它项目的pom.xml文件,重新导入后即可使用。

<dependency>
<groupId>com.gitee.rslai.commons.http</groupId>
<artifactId>http</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

八、其它人引入此项目

  由于发布的是 SNAPSHOT 所以只能自己引用,如果需要他人引用需要发布 release 版本

  将pom.xml中的-SNAPSHOT去掉

    <groupId>com.gitee.rslai.base.commons</groupId>
<artifactId>util</artifactId>
<version>0.1-SNAPSHOT</version>

  改为

    <groupId>com.gitee.rslai.base.commons</groupId>
<artifactId>util</artifactId>
<version>0.1</version>

  重新发布:

mvn clean deploy

  最后提示 close、release即表示发布成功。过10来分钟即可通过pom导入,过2小时可在 http://search.maven.org/ 网站查询到

九、导入密钥

  步骤如下,先生成新密钥,再导入之前密钥,然后再签名导入密码,最后将新密钥推到GPG key-servers

1、安装gpg4win

2、单击“导入”

3、导入后需要创建一个新的key用以验证之前的密钥

4、创建新密钥需要密码

5、点击之前的密钥证书选择验证,输入密码即验证成功

6、发布新公钥到GPG key-servers

  查看现有keys

gpg --list-keys

  上面的是之前的公钥,下边的是本次生成的公钥

  使用之前的公钥查询

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 1413D2A43XXXXXXXXXXXXXXXXXXXX0F9D7337

  会查到已经注册

  使用新公钥查询会看到没有注册

  重新发布公钥到GPG key-servers,再次查询就会看到已经注册

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

7、mvn deploy时报如下错误,原因是之前没有将新生成的公钥推送到key-servers,错误信息如下

  

执行send-keys即可

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

  

参考文档:

  https://blog.csdn.net/xiajiqiu/article/details/77607492

发布构件到Maven中央仓库的更多相关文章

  1. 使用CI/CD工具Github Action发布jar到Maven中央仓库

    之前发布开源项目Payment Spring Boot到Maven中央仓库我都是手动执行mvn deploy,在CI/CD大行其道的今天使用这种方式有点"原始".于是我一直在寻求一 ...

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

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. 发布项目到maven中央仓库

    https://www.xiaominfo.com/2017/04/25/swagger-bootstrap-ui-issue-maven-central/?tdsourcetag=s_pcqq_ai ...

  4. Maven中央仓库发布历程

    一.前言 最近自己在学习Spring boot的过程中开发了一个组件 multithreadpool-spring-boot-starter,通过这个组件,我们可以动态根据配置文件进行多个线程池的初始 ...

  5. 发布Jar包到maven中央仓库

    什么是maven中央仓库 maven是java世界最流行的构建工具,构建内容囊括了一个java项目的整个生命周期.其中最重要的功能就是依赖管理,maven通过一个类似云的ftp站点统一管理所有java ...

  6. 喜大普奔,微软Microsoft JDBC Driver For SQL Server已发布到maven中央仓库

    相信通过java和SQLServer开发应用的同学们都经历过如下类似的问题. 微软提供的JDBC官方驱动没有放置在Maven仓库中,这样如果你的Java应用需要访问SQL Server,你不得不下载s ...

  7. 贡献你的代码,将jar包发布到Maven中央仓库以及常见错误的解决办法

    前几天将自己的日志工具发布到了Maven中央仓库中.这个工具本省没有多少技术含量,因为是修改别人的源代码实现的,但是将jar发布到Maven仓库却收获颇丰,因为网上有些教程过时了,在此分享下自己发布j ...

  8. 如何发布jar包到maven中央仓库

    自使用maven以来,没少使用maven中央仓库中的各种jar包,方便有效,但是咱们也不能总是只取不予,也应该懂得奉献,当你写好了一个十分好用的jar包,想贡献出去给大家使用的时候,应该怎么做呢?当然 ...

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

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

随机推荐

  1. 【设计模式】—— 桥接模式Bridge

    前言:[模式总览]——————————by xingoo 模式意图 这个模式使用的并不多,但是思想确实很普遍.就是要分离抽象部分与实现部分. 实现弱关联,即在运行时才产生依赖关系. 降低代码之间的耦合 ...

  2. Duplicate spring bean id

    问题背景:从本地调用服务器的dubbo接口进行测试 实现思路:基于IDEA+Spring+maven+Dubbo搭建测试项目,从本地直接调用   具体实现思路可参考博客:https://www.cnb ...

  3. BZOJ1004 HNOI2008Cards(Burnside引理+动态规划)

    直接给了一个置换群(当然要自己手动加上不洗牌的情况).考虑求不动点数量即可.对于一个置换,求出所有循环的长度,然后设f[i][x][y]为给前i个循环着色后,用了x张红色卡片.y张绿色卡片的方案数,d ...

  4. Ansible批量在远程主机执行命令

    Ansible直接执行远程命令,不用ssh登陆交互执行. 如下: ansible all -i 192.168.199.180, -m shell -a "ifconfig" -u ...

  5. java基础知识疑难点

    1.“static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? “static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实 ...

  6. Luogu 2762 太空飞行计划 / Libre 6001 「网络流 24 题」太空飞行计划 (网络流,最大流)

    Luogu 2762 太空飞行计划 / Libre 6001 「网络流 24 题」太空飞行计划 (网络流,最大流) Description W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行 ...

  7. python BitTornado P2P分发大文件

    P2P分发大文件思路 1.将软件包生成种子文件 2.通过saltstack将种子文件分发至每台服务器 3.每台服务器进行种子下载 推荐使用Twitter开源的murder.Twitter用它来分发大文 ...

  8. Hadoop基础-Map端链式编程之MapReduce统计TopN示例

    Hadoop基础-Map端链式编程之MapReduce统计TopN示例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.项目需求 对“temp.txt”中的数据进行分析,统计出各 ...

  9. influxdb简单使用

    之前对influxdb有一个简单的了解和入门的使用,近期由于想使用influxdb做一点东西玩玩,又要捡起influxdb.本篇就针对influxdb的数据库.表的概念,增删改查操作.RESTful操 ...

  10. [整理]解析Json需要设置Mime

    IIS6.0 1.打开IIS添加Mime项 关联扩展名:*.json内容类型(MIME):application/x-javascript 2.添加映射: 位置在IIS对应站点右键属性:”主目录”-” ...