前言

应为在多个Java项目中使用相同的库,来回导入jar包又比较麻烦,Maven私人仓库感觉不太行,所以我决定在Maven中央仓库中发布自己的项目,但是过程有点繁琐,我也是折腾好久才弄明白的。

注册Sonatype账号

打开 Maven中央仓库 ,点击右上角Sign In,在点击Sign Up进入注册页面。

填写好自己的个人信息后注册即可。

添加并验证Namespace

打开 Namespace管理界面

点击注册新的Namespace,这里的Namespace要和项目中的groupId保持一致。

注册好之后点击验证Namespace,然后需要你在dns提供商添加一条TXT解析记录,添加好后点击验证,验证完成即可。

安装GPG并上传公钥

  1. 打开 GPG官网 下载并安装好GPG

  1. 打开命令行并输入以下命令

    gpg --gen-key
  1. 然后输入姓名和邮箱,并在弹窗中输入密钥密码

    生成成功后就会显示秘钥信息,中间的 27B27A9C187845CB1546E63584D3EDB882F830EF就是秘钥标识

  2. 上传并验证公钥,上传后需要等一会再验证,不然会显示 No Data

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys [秘钥标识]
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys [秘钥标识]

生成并配置用户Token

1. 打开 Maven中央仓库我的账号 点击生成用户Token

<server>
	<id>${server}</id>
	<username>username</username>
	<password>password</password>
</server>

${server} :可以自己随便填写

2. 然后打开 ~/.m2/settings.xml 文件添加上面的配置

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0  https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>${server}</id>
            <username>username</username>
            <password>password</password>
        </server>
    </servers>
</settings>

项目pom.xml的配置

pom.xml文件中项目的groupId要和注册的Namespace 保持一致,下面这些是必须配置的,不然会导致上传失败。

  1. 项目信息

<name>[项目名称]</name>
<description>[项目描述]</description>
<url>[Git仓库地址]</url>
  1. 开发者信息

<developers>
    <developer>
        <id>[开发者ID]</id>
        <name>[开发者姓名]</name>
        <email>[开发者邮箱]</email>
        <roles>
            <role>[开发者角色]</role>
        </roles>
    </developer>
</developers>
  1. 证书配置

<licenses>
    <license>
        <name>The Apache Software License, Version 2.0</name>
        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
</licenses>
  1. 打包配置,讲publishingServerId修改为上面配置的${server}

 <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>3.11.2</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.sonatype.central</groupId>
                <artifactId>central-publishing-maven-plugin</artifactId>
                <version>0.8.0</version>
                <extensions>true</extensions>
                <configuration>
                    <publishingServerId>${server}</publishingServerId>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.3.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-compiler-plugin</artifactId>
                <version>3.13.0</version>
                <configuration>
                    <source>15</source>
                    <target>15</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>3.2.8</version>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

上传Jar包

再命令行中打开项目

mvn clean deploy

上传时会弹出窗口,输入密钥密码就行了

上传成功后会如有下显示

如果是上传失败,就打开 Maven中央仓库部署页(Deployments ) ,查看错误信息,这里就不多阐述了。

上传成功后并没有发布,打开 部署页面 点击发布(Publish)就行了,过几分钟就会显示已发布(Published)。