将自己的java项目发布到maven中央仓库
介绍
将自己做的开源项目发布到中央仓库,方便其他开发者引用
博主开源项目:
https://gitee.com/xuelingkang/spring-boot-demo
https://gitee.com/xuelingkang/react-demo
https://gitee.com/xuelingkang/zookeeper
https://gitee.com/xuelingkang/sftp
https://gitee.com/xuelingkang/websocket
演示地址:
https://demo.xzixi.com
步骤
- 将项目上传到github(博主用的码云)。
- 注册sonatype。
- 在sonatype新建issue,等待审批。
- 安装gnu pg。
- 创建并上传密钥。
- 修改maven的settings.xml和项目的pom.xml配置。
- 上传项目。
将项目上传到github
在github上创建仓库,将本地项目上传到仓库中。
注册sonatype
密码要求复杂,最后记到记事本上。
在sonatype新建issue
- 登陆sonatype,点击头部导航
新建
按钮
- 填写表单,参考下图
新建之后等待审批就行,一般很快,会有邮件通知,到这里可以先进行后面的步骤,等审批之后再继续
参考审批过程,中间需要检查是否Group Id域名的拥有者,添加txt解析,然后在issue上回复就行。
安装gnu pg
下载地址
博主用的windows
下载完成后双击安装,默认会添加环境变量
安装完成后执行gpg --version
检查一下,如果找不到,手动将安装目录下的bin
目录追加到环境变量的path
路径下
创建并上传密钥
- 打开cmd窗口,执行
gpg --full-gen-key
,导航很容易读懂,看不懂直接点回车全部默认也行 - 最后会提示输入
passphrase
,设置之后记录下来,后面需要用 - 在cmd窗口执行
gpg --list-key
- 上传密钥
gpg --keyserver http://pool.sks-keyservers.net:11371 --send-keys B423C75169B2BD8AF0E1B4E427410B1A53117919
gpg --keyserver http://keyserver.ubuntu.com:11371 --send-keys B423C75169B2BD8AF0E1B4E427410B1A53117919
gpg --keyserver http://keys.gnupg.net:11371 --send-keys B423C75169B2BD8AF0E1B4E427410B1A53117919
命令格式:
gpg --keyserver 服务器地址 --send-keys 上图第二个框框中的内容
需要上传到的服务器地址有很多,博主没有记录,可以先跳过,在后面执行上传项目时会报出来那些服务器没有上传密钥,再将所有服务器都传一下就行了
修改settings.xml
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 省略其他配置 -->
<servers>
<server>
<id>ossrh</id>
<username>sonatype账号</username>
<password>sonatype密码</password>
</server>
</servers>
<profiles>
<profile>
<id>ossrh</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.passphrase>生成密钥时输入的passphrase</gpg.passphrase>
<!-- gpg.exe的绝对路径,在gpg安装目录下的bin目录中 -->
<gpg.executable>D:\Program Files (x86)\GnuPG\bin\gpg.exe</gpg.executable>
<!-- 上一步执行gpg --list-key命令输出的路径,一般在C:\User\当前用户\AppData\Roaming\gnupg -->
<gpg.homedir>C:\Users\Administrator\AppData\Roaming\gnupg</gpg.homedir>
</properties>
</profile>
</profiles>
</settings>
修改pom.xml
参考pom.xml
如果是聚合工程,需要将子模块的<name><name>
属性都设置上
<version><version>
填写正式的版本号,不要用SNAPSHOT
没有翻墙下载插件可能会慢,添加上阿里代理的仓库就行
<repositories>
<repository>
<id>public</id>
<name>public</name>
<url>https://maven.aliyun.com/repository/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>gradle</id>
<name>gradle</name>
<url>https://maven.aliyun.com/repository/gradle-plugin</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
maven-release-plugin
插件下可以设置不需要上传的文件
上传项目
在项目目录下执行maven命令
mvn clean deploy -Dmaven.test.skip=true
应该会报出很多服务器没有上传密钥,返回上传密钥那一步,将报出来的服务器都上传一遍即可。
其他可能会报pom.xml配置错误,按要求改就行
成功之后等待同步到中央仓库就行,同步会有延迟,一两个小时之后就可以到https://repo.maven.apache.org/maven2查看。
手动发布
按照以上步骤,项目发布到sonatype后会自动close
,然后release
,但是由于网络延迟等原因,有可能会失败。
- 打开https://oss.sonatype.org并登录,切换到stagingRepositories菜单
- 找到自己的项目,用maven坐标搜索,选中之后点击
close
按钮,关闭需要时间,可以等一会再回来看 - 等待项目关闭完成之后,选中项目点击
release
按钮,发布需要时间,点击发布之后就不需要操作了,发布完成后会自动删除项目