手把手教你发布自己的maven依赖到中央仓库(图文教程)
前言
最近心血来潮,做了自己的小工具包,想着能否放到公有仓库上,以便能在别的项目引入。于是来整合一下我实验成功的步骤,用于读者参考。
sonatype配置
首先需要注册一个sonatype的账号,用于后续我们发布,官方地址:central.sonatype.com/

点击signin后,有账号可以直接登陆,没有则点击signUp按条件注册一个。

登录后点击右上角Public,进入Namespace配置页面
进入Public Settings的页面后,在网页右上角点击新增命名空间 add NameSpace,我这里已经创建好了一个Namespace。

这里需要验证你的Namespace,有两个选择,一是直接输入你拥有的域名,验证时配置DNS解析(在根目录下放入特定的.txt文件);二是使用你的github用户名作为Namespace,规则如下:io.github.[你的用户名]。
我这里选择的是使用github信息,输入信息后点击Verify Namespace会提示在github里创建特定名称的仓库作为验证标识。这里还没经过验证的状态会显示Unverified,如果在你的github创建好了指定的仓库,状态会自动显示pending,标识正在验证。
按照要求创建名称为[tnyjzqdncw]仓库后,会自动进行验证。
创建完仓库后验证通过标识如下图所显示为Verified,至此,有关sonatype的配置就暂告一段落。
下载gpg并生成密钥
下载地址:https//www.gnupg.org/download/ ,选用适合你的操作系统的文件格式即可。
下载后,按以下步骤在使用命令行进行操作,在你本机中生成密钥后即可。
生成密钥过程中会gpg提醒需要生成passphrase,要记住passphrase,后续配置会使用上。
# 检查版本
gpg -version
# 生成密钥,会提醒你输入name和email,按提示输入两个属性值后,输入O结束。
gpg --gen-key
# 查看密钥
gpg --list-keys
# 发布公钥
gpg --keyserver keyserver.ubuntu.com --send-keys 刚刚生成的公钥
项目POM文件配置
在你需要打包发布的项目POM文件中加入以下内容(替换中文内容)
<!-- name属性可以自定义名称也可以按这样写通配符-->
<name>${project.groupId}:${project.artifactId}</name>
<description>你的项目描述</description>
<url>你的项目地址(我填的github主页)</url>
<!-- license许可证信息,如果没有要求可以不改 -->
<licenses>
<license>
<name>The Apache License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
</license>
</licenses>
<!-- 开发者信息-->
<developers>
<developer>
<name>开发者名称</name>
<email>开发者email</email>
<organization>组织名称</organization>
<organizationUrl>组织地址</organizationUrl>
</developer>
</developers>
<!-- scm -->
<scm>
<connection>scm:你的github https链接</connection>
<developerConnection>scm:你的github git链接</developerConnection>
<url>你的github项目地址</url>
</scm>
<!-- 需要的插件 -->
<build>
<plugins>
<plugin>
<groupId>org.sonatype.central</groupId>
<artifactId>central-publishing-maven-plugin</artifactId>
<version>0.4.0</version>
<extensions>true</extensions>
<configuration>
<publishingServerId>central</publishingServerId>
<!-- 这里设置tokenAuth,后续需要在sonatype中生成User token-->
<tokenAuth>true</tokenAuth>
<!-- 设置自动发布-->
<!-- <autoPublish>true</autoPublish> -->
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.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-javadoc-plugin</artifactId>
<version>2.9.1</version>
<configuration>
<!--跳过javadoc语法不规范报错 -->
<additionalparam>-Xdoclint:none</additionalparam>
<!--指定java执行路径,我本机的path使用jdk8,实际我项目使用jdk17,所以指定路径执行 --
<javadocExecutable>替换成你的javadoc path地址或${JavaHome}\bin\javadoc</javadocExecutable>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!--gpg 签名插件,后面需要配置-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
maven settings文件配置
接下来,需要在我们要在执行的maven的settings.xml中添加一些元素。
首先,我们需要设置User Token,在sonatype主页上点击右上角进入账号信息页面。
点击Generate User Token,点OK确认生成。

得到类似如下格式的内容
<server>
<id>${server}</id>
<username>your-user-name</username>
<password>your-password-here</password>
</server>
生成并保存Token内容后,现在会用上之前GPG的passphrase。
在settings.xml文件加入以下内容
<!-- 加入上文生成的sonatype的User Token内容-->
<servers>
<server>
<id>central</id> <!--我这里将#{server}显式替换成central -->
<username>your-user-name</username>
<password>your-password-here</password>
</server>
</servers>
<!-- 设置GPG执行路径,passphrase-->
<properties>
<gpg.executable>your-gpg-path\bin\gpg</gpg.executable>
<gpg.passphrase>your-passpahrase</gpg.passphrase>
</properties>
maven打包发布
回到项目中执行命令,或是依次执行idea项目中maven的lifecycle的clean和deploy。
mvn clean deploy
如果你的子模块不需要发布,可以在项目根pom.xml中的modules注释掉对应模块,或者在子模块的pom.xml中加入
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
在maven执行deploy成功后,回到sonatype的publish里的Deployments可以查看到验证成功可用于发布的包内容,在VAILDATED状态包的发布信息中点击Publish后,项目会自动发到中央仓库里并且状态对应改成PUBLISHED

大概过个半小时左右,你就能在仓库中搜索到你上传的包内容了,并且也能中maven中央仓库中找到对应内容 仓库地址:repo1.maven.org/maven2/。

转载自:https://juejin.cn/post/7369783680426016778