发布jar包到maven中央仓库

一、写在前面

最近做了一个权限认证的框架,想把jar发布到maven中央仓库上,方便大家使用。于是就有了这篇博客。

二、具体步骤

2.1 注册账号

首先要做的就是注册账号,这个账号可用于提出申请groupId的Issue,也可用于发布和登录到中央仓库。

2.1.1 注册sonatype

工单地址:https://issues.sonatype.org
发布jar包到maven中央仓库_第1张图片

2.2 申请groupId

创建申请groupId的工单
发布jar包到maven中央仓库_第2张图片
工作人员会审核你的申请,如果你的groupId是你的域名,还需要提供一些证明。如果没有域名也可以使用一些开源网站,例如com.github.xxxio.github.xxx等。
如果审核时间很长的话,可以尝试再次提交一个工单。工作人员在审核的时候可能根据最近的Issue来的。

2.3 配置GPG

这次我用的mac,所以我使用brew安装的gpg。

brew install gpg

然后建立软连接到/usr/local/bin/

sudo ln -s /usr/local/Cellar/gnupg/2.2.7/bin/gpg /usr/local/bin/gpg

因为我使用的版本是2.2.7,加密多次失败后。网上查到需要进行一些额外配置。
在gpg的安装目录(~/.gnup)下新建两个配置文件:
gpg.conf

use-agent
pinentry-mode loopback

gpg-agent.conf

allow-loopback-pinentry

2.4 生成秘钥

执行命令,并填入一些信息后生成秘钥

gpg --gen-key

gpg --list-keys

pub   rsa2048 2018-05-18 [SC] [有效至:2020-05-17]
      xxxxx
uid           [ 绝对 ] sunbufu <sunyoubufu@qq.com>
sub   rsa2048 2018-05-18 [E] [有效至:2020-05-17]

发布公钥到服务器

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

2.5 配置settings.xml

首先需要配置用户名和密码(2.1.1中注册的用户名和密码)

<server>
    <id>ossrhid>
    <username>用户名username>
    <password>密码password>
server>

2.6 配置pom.xml

使用发布使用的parent。

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

如果不方便也可以自己设置插件的方式(注意我的pom是parent,所以如果不是parent需要把pluginManagement标签去掉)。

<build>
    <pluginManagement>
        <plugins>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <configuration>
                    <source>${java.version}source>
                    <target>${java.version}target>
                configuration>
            plugin>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-source-pluginartifactId>
                <executions>
                    <execution>
                        <id>attach-sourcesid>
                        <goals>
                            <goal>jar-no-forkgoal>
                        goals>
                    execution>
                executions>
            plugin>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-javadoc-pluginartifactId>
                <version>2.10.3version>
                <executions>
                    <execution>
                        <id>attach-javadocsid>
                        <goals>
                            <goal>jargoal>
                        goals>
                    execution>
                executions>
            plugin>
            
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-gpg-pluginartifactId>
                <version>1.6version>
                <executions>
                    <execution>
                        <id>sign-artifactsid>
                        <phase>verifyphase>
                        <goals>
                            <goal>signgoal>
                        goals>
                    execution>
                executions>
            plugin>
            
            <plugin>
                <groupId>org.sonatype.pluginsgroupId>
                <artifactId>nexus-staging-maven-pluginartifactId>
                <version>1.6.3version>
                <extensions>trueextensions>
                <configuration>
                    <serverId>ossrhserverId>
                    <nexusUrl>https://oss.sonatype.org/nexusUrl>
                    <autoReleaseAfterClose>trueautoReleaseAfterClose>
                configuration>
            plugin>
        plugins>
    pluginManagement>
build>

2.7 部署

在项目目录下执行部署命令

mvn clean deploy -P sonatype-oss-release -Darguments="gpg.passphrase=密钥密码"

这是最容易出问题的一部,其中我就遇到了权限不足等问题,记录在此:
1. 认证不通过:查看是否修改maven中的settings文件。因为使用的命令发布,所以settings文件会直接使用maven中默认路径下的文件。
2. gpg加密失败:查看gpg安装情况,并确认版本,看是否有进行额外配置(核对2.3)。

2.8 发布

发布jar包到maven中央仓库_第3张图片
1. 访问https://oss.sonatype.org/#stagingRepositories
登录后在Staging Repositories中查看上一步部署上去的项目。
2. 选中后点击Close,这时服务器会对你的项目进行一些检查,如果有问题的话会提示,并且无法进行下一步。
3. 选中后进行Release,至此我们的操作全部完成。剩下的就是等待服务器的一些同步之类的操作了。
大约2个小时后,你就可以搜索到你的项目了。
发布jar包到maven中央仓库_第4张图片

三、总结

此次发布断断续续的进行了两天左右,因为是第一次发布到中央仓库,所以遇到了很多没有预想到的问题。特此记录下来,希望能给更多的人一些帮助吧。

你可能感兴趣的:(maven)