好久没在Maven中央仓库发布过jar包了,记录下本次发布过程以备查缺
本次发布一个mapper自动生成的jar,项目地址如下
https://github.com/SirYuxuan/mapper-processor
1. 打开sonatype提交一个issues
https://issues.sonatype.org/secure/Dashboard.jspa
- 首先我们登陆这个网址,没有账号的话可以直接注册,注册过程这里就不多赘述了
- 我们在控制台点击如下按钮弹出创建issues的界面
或者直接打开链接创建
https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
- 填写如下信息并点击Create创建
这里我就不挨个字段介绍了。
- 创建issues后需要验证域名,这里我的教程是针对拥有独立域名的用户,如果你想使用GitHub的方式,后续我将单独出一篇文章介绍
- 通过添加DNS解析的方式确认域名,添加一个TXT类型的解析,主机记录为Ticket,如:OSSRH-57220,记录值为Ticket的URL地址,如:https://issues.sonatype.org/browse/OSSRH-57220。 操作完在Sonatype界面上将Ticket重新开放,等一段时间会审核通过。
- 配置GPG
- 通过下面的命令生成密钥对,过程中需要输入一个密码,这个密码要记住。
- 如果没有此程序请自行安装,mac下可使用brew进行安装
brew install gpg
- 请输入
gpg --gen-key
按照提示输入用户名和邮箱 - 通过下面的命令查看密钥,并将公钥上传到远程服务器。
- gpg --list-key
- gpg --keyserver keys.openpgp.org --send-keys 73F5B76E4FFCC84C0C4F0A2B5FE22E99BDAFD070
- 配置Maven
- 在setting.xml文件的servers节点下增加一个server节点,配置之前注册的Sonatype的帐号和密码。
<servers> <server> <id>ossrh</id> <username>Sonatype账号</username> <password>Sonatype密码</password> </server> </servers> ```
- 配置项目的pom.xml
- 需要配置Maven的文档插件、打包插件、gpg验证插件等,参考如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yuxuan66</groupId>
<artifactId>mapper-processor</artifactId>
<version>0.0.1</version>
<name>mapper-processor</name>
<properties>
<auto-service.version>1.0</auto-service.version>
<hutool-all.version>5.4.2</hutool-all.version>
</properties>
<url>https://github.com/SirYuxuan/mapper-processor</url>
<description>自动生成MyBatisPlus的Mapper</description>
<licenses>
<license>
<name>The Apache Software License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<tag>master</tag>
<url>https://github.com/SirYuxuan/mapper-processor</url>
<connection>scm:git:git@github.com:SirYuxuan/mapper-processor.git</connection>
<developerConnection>scm:git:ggit@github.com:SirYuxuan/mapper-processor.git</developerConnection>
</scm>
<developers>
<developer>
<name>Yuxuan</name>
<email>1718018032@qq.com</email>
<organization>Yuxuan</organization>
</developer>
</developers>
<dependencies>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool-all.version}</version>
</dependency>
<!-- auto service -->
<dependency>
<groupId>com.google.auto.service</groupId>
<artifactId>auto-service</artifactId>
<version>${auto-service.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- doc plugin,Maven API文档生成插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- resources plugin,Maven 资源插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>3.1.0</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>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<!-- gpg plugin,用于签名认证 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<!--staging puglin,用于自动执行发布阶段(免手动)-->
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>1.6.7</version>
<extensions>true</extensions>
<configuration>
<serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
<!-- release plugin,用于发布到release仓库部署插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.2</version>
</plugin>
</plugins>
</build>
</project>
-
编译并发布到Maven中央仓库
-
在发布前,先使用Sonatype的帐号密码登录一次Nexus Repositories,地址:https://oss.sonatype.org/。
- 使用下面的命令编译并发布:
mvn clean deploy
- 如果提示gpg报错,可能是因为无法弹出输入密码的窗口导致,执行下面的命令后再试一次。
export GPG_TTY=$(tty)
- 使用下面的命令编译并发布:
-
部署流程为 open -> close -> release ,然后会发布到Maven中央仓库。可以到https://oss.sonatype.org/暂存库(Staging Repositories)查看处理过程,如果已经Release,则暂存库中可能找不到,直接通过项目信息搜索来查找。
-
项目发布成功后,到Sonatype将之前的Ticket关闭。
-
查看项目
评论区