记一次发布项目到Maven中央仓库

437 阅读4分钟

前言

近段时间做了一个基于SpringBoot的小组件,Github地址是github.com/Licoy/encry…,然后想为了方便一点就发布到Maven中央库上去,不过这一波操作下来可谓是一波三折~
记一次发布项目到Maven中央仓库

正文

第一步

首先,我们需要issues.sonatype.org提交一个新的issue,其中Summary填写自己的项目摘要信息,Group Id填写自己的github地址即可,例如com.github.licoy,如果您要使用自己的域名作为GroupId的话是需要进行验证的,由于时差关系,有时候我们在工作的时候他们审核人员在休息,所以我用了两天时间才完成验证,有兴趣的同学可以看看: issues.sonatype.org/browse/OSSR…;当您的issue状态变成RESOLVED就可以进行下一步操作了,否则是没有上传权限的。

第二步

在项目的pom.xml中引入Sonatype的通用oss-parent:

<parent>
        <groupId>org.sonatype.oss</groupId>
        <artifactId>oss-parent</artifactId>
        <version>7</version>
</parent>

增加发布信息:

<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>
 
    <scm>
        <connection>scm:git:git://github.com/Licoy/encrypt-body-spring-boot-starter.git</connection>
        <developerConnection>scm:git:ssh://github.com:Licoy/encrypt-body-spring-boot-starter.git</developerConnection>
        <url>http://github.com/Licoy/encrypt-body-spring-boot-starter/tree/master</url>
    </scm>
 
    <developers>
        <developer>
            <name>Licoy</name>
            <email>licoycn@foxmail.com</email>
            <organization>https://www.licoy.cn</organization>
            <timezone>+8</timezone>
        </developer>
    </developers>

dependencyManagementbuildprofilesdistributionManagement配置请参考:github.com/Licoy/encry…

第三步

配置maven的setting,添加Sonatype的oss账号信息:

<servers>
  <server>
      <id>releases</id>
      <username>username</username>
      <password>password</password>
    </server>
  <server>
      <id>snapshots</id>
      <username>username</username>
      <password>password</password>
    </server>
</servers>

将上述配置中的username以及password换成自己的Sonatype账号和密码即可。

第四步

生成GPG-KEY,我是使用git客户端来生成的,使用如下命令:

gpg --gen-key

输入命令,敲击回车开始生成,前面的信息选择默认的即可,然后填写自己的Name以及Email等信息,值得注意的一点是在输入passphase的时候一定要记住您输入的内容,因为后面会用到,然后将生成的gpg公钥上传到gpg服务器:

gpg --list-keys #查看gpg公钥列表

记一次发布项目到Maven中央仓库

gpg --keyserver hkp://pool.sks-keyservers.net:11371 --send-keys 8D7F6196 #上传
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys  8D7F6196 #查看是否上传成功

不过我一般都是同时上传到几个GPG服务上:

gpg --keyserver hkp://keys.gnupg.net:11371 --send-keys 8D7F6196 
gpg --keyserver hkp://pool.sks-keyservers.net:11371 --send-keys 8D7F6196 
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 8D7F6196 
gpg --keyserver hkp://keys.gnupg.net:11371 --send-keys 8D7F6196 
gpg --keyserver hkp://pool.sks-keyservers.net:11371 --send-keys 8D7F6196 
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 8D7F6196 

第五步

到这一步就可以上传部署了,执行:

mvn clean javadoc:jar deploy -P release -Darguments="gpg.passphrase=gpgPassword" -Dmaven.javadoc.skip=true

将上方的gpgPassword换成自己生成gpg-key时的passphase参数的值,然后回车即可部署上传到snapshots,当界面显示BUILD SUCCESS时,就已经成功将项目编译上传到https://oss.sonatype.org了。

第六步

登录oss.sonatype.org,账号密码就是snapshots的账号密码,登录之后然后选择staging Repositories:
记一次发布项目到Maven中央仓库
然后找到自己groupID的构件,勾选然后点击上方的Close按钮进行验证,系统会自动验证该构件是否满足指定要求,当验证都通过之后,再点击Release以及填写相关描述来发布该构件,到这一步你就可以在在oss.sonatype.org内搜索到自己的项目了。

第七步

到自己的issue内回复“我已经成功部署好第一个发行版”,那么工作人员会进行给你同步到其他的仓库,只是第一次需要这样后面就不会了,至此,所有操作已经完成。

后记

这几天为了上传到Maven居然早上4点起来回复工单,否则就又要等待一天,看来只要心里有信念什么都不是事儿~

不过话说回来,这次也整体的了解了发布的流程,这对于后面如果做其他的工具进行发布的时候会相对来说简单很多,实践就是一个学习的过程,同理:学习也是一个实践的过程。 :mrgreen: