2022年发布jar到Maven公共仓库最全攻略
2022年jar包发布到Maven公共仓库最全攻略
分几个步骤:
1、注册 issues.sonatype.org 账号
2、创建 issues 填写项目地址(github、gitee等)
3、验证域名持有(没有使用自己域名的跳过)
4、等待上面几点验证完成,需要手动相issues状态改为open(点击操作中的响应),然后等待工作人员通过。
5、通过后你就可以推送jar到 https://s01.oss.sonatype.org/ 了。(到此才能登陆)
6、等待同步到中央仓库即可正常引入
1、注册账号
去 https://issues.sonatype.org/ 中注册一个账号。
2、创建issues
点击导航栏的创建,若你没有域名,在Group Id
中填写参考:https://central.sonatype.org/publish/requirements/coordinates/
填写信息,下面的是我的例子:
然后创建
得到 OSSRH-79874
,然后等待审核人员添加域名验证评论
3、域名持有验证
当工作人员叫你添加域名认证时,
将 OSSRH-79874
解析到我的域名lingkang.top
做完以上,等几分钟再回到issues中,将状态改为open,一定要改为open,否则没有工作人员审核通过
对应位置有一个响应按钮,点击它就能将状态设置为open,我不太记得是不是响应了,记得添加了域名解析再点
4、审核通过
然后工作人员就会审核,等一段时间来就会看到状态变成已解决
,说明通过了,然后发一句感谢:
这时你就可以通过上面注册的账号登录 https://s01.oss.sonatype.org/#stagingRepositories
5、推送jar
5.1 申请 gpg 签名
说明:https://central.sonatype.org/publish/requirements/gpg/
在这里下载简易安装版
说明:https://central.sonatype.org/publish/requirements/gpg/
或者(推荐)
在这里下载gpg4win-4.0.0.exe
https://gpg4win.org/download.html
一路安装点击默认即可,安装后可能需要重启电脑。
cmd生成签名:
gpg --gen-key
需要填写一些基本信息,并设置一个密码
注意这个密码很重要,你换一台电脑后推送项目时需要输入这个密码。忘记了你就只能重新生成!!!
注意这个密码很重要,你换一台电脑后推送项目时需要输入这个密码。忘记了你就只能重新生成!!!
注意这个密码很重要,你换一台电脑后推送项目时需要输入这个密码。忘记了你就只能重新生成!!!
例如生成如下:
pub ed25519 2022-04-12 [SC] [expires: 2024-04-11]
DD33E5A9CDD332F444EAE9EF888A06B29706DBB4
uid lingkang <ling-kang@qq.com>
sub cv25519 2022-04-12 [E] [expires: 2024-04-11]
上传公钥到服务器
使用 gpg --keyserver hkp://URL --send-keys
签名上传公钥,然后使用 gpg --keyserver hkp://URL --recv-keys
签名查看是否上传成功。
gpg --keyserver keyserver.ubuntu.com --send-keys DD33E5A9CDD332F444EAE9EF888A06B29706DBB4
检查
gpg --keyserver keyserver.ubuntu.com --recv-keys DD33E5A9CDD332F444EAE9EF888A06B29706DBB4
或者
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys DD33E5A9CDD332F444EAE9EF888A06B29706DBB4
检查
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys DD33E5A9CDD332F444EAE9EF888A06B29706DBB4
5.2 配置maven
将 sonatype 账号密码配置到setting.xml
的 <servers></servers>
<!-- Maven公共仓库 -->
<server>
<id>maven-public</id><!-- 注意这个id名称,后面会用到 -->
<username>lingkang</username>
<password>your password</password>
</server>
5.3 推送jar
在项目中,配置一下pom.xml
<modelVersion>4.0.0</modelVersion>
<groupId>top.lingkang</groupId>
<artifactId>final-session</artifactId>
<packaging>pom</packaging>
<version>2.0.1</version>
<url>https://gitee.com/lingkang_top/final-session</url>
<name>final-session</name>
<description>final-session 一个轻量级分布式session框架</description>
<organization>
<name>lingkang</name>
<url>http://lingkang.top</url>
</organization>
<developers>
<developer>
<name>lingkang</name>
<email>ling-kang@qq.com</email>
<organization>lingkang</organization>
<organizationUrl>http://lingkang.top</organizationUrl>
<roles>
<role>Developer</role>
</roles>
<timezone>+8</timezone>
</developer>
</developers>
<licenses>
<license>
<name>MIT License</name>
<url>http://www.opensource.org/licenses/mit-license.php</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<url>https://gitee.com/lingkang_top/final-session</url>
<connection>https://gitee.com/lingkang_top/final-session.git</connection>
</scm>
<modules>
<module>final-session-core</module>
<module>example-servlet</module>
<module>example-springboot</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<spring-boot.version>2.1.12.RELEASE</spring-boot.version>
</properties>
<!-- 依赖 .... -->
<!-- 只需在父工程中添加,子工程不用添加 -->
<distributionManagement>
<snapshotRepository>
<id>maven-public</id> <!-- 此处id与setting.xml中的服务id保持一致 -->
<name>oss Snapshots Repository</name>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>maven-public</id> <!-- 此处id与setting.xml中的服务id保持一致 -->
<name>oss Staging Repository</name>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<phase>package</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 生成javadoc -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
<configuration>
<source>${java.version}</source>
<additionalJOption>-Xdoclint:none</additionalJOption>
<failOnError>false</failOnError>
</configuration>
</plugin>
<!-- gpg认证 只需在父工程中添加 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>central</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<layout>default</layout>
<!-- 是否开启发布版构件下载 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否开启快照版构件下载 -->
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
你也可以随便找个spring源码包,照着它抄pom.xml即可,不必像我这样
执行安装推送,根目录下执行
mvn clean deploy
若报找不到 gpg2 错误,就去C:\Program Files (x86)\GnuPG\bin将gpg.exe改为gpg2.exe即可
若报找不到 gpg2 错误,就去C:\Program Files (x86)\GnuPG\bin将gpg.exe改为gpg2.exe即可
若报找不到 gpg2 错误,就去C:\Program Files (x86)\GnuPG\bin将gpg.exe改为gpg2.exe即可
可以看到核心代码生成的jar已经成功,那些example不用上传,报错也不用管。
5.4 选择要发布的jar
登录 https://s01.oss.sonatype.org/#stagingRepositories
选择合上要发布的jar,将暂存库关闭并通过检验就会不同到Maven,一定要关闭暂存库通过才能同步!
一定要所有的扫描校验都通过才行,而且有延迟和邮件通知你的
有校验没通过就要自己根据提示改改,重新打包推送。
接着释放release
依赖:https://central.sonatype.org/publish/release/
一定要release
才会同步到Maven公共仓库,否则过一段时间会清理了你的jar
过半小时就能直接引用:(虽然搜索不到)
此时你就能在https://repo1.maven.org/maven2/
中找到你的依赖
<dependency>
<groupId>top.lingkang</groupId>
<artifactId>final-session-core</artifactId>
<version>2.0.1</version>
</dependency>
我的已经同步公共仓库:https://repo1.maven.org/maven2/top/lingkang/
过几天就有搜索结果。
5.5 注意事项
若不需要模块也上传了,可以在关闭暂存库前删除:
这位帅哥点个赞再走
这么辛苦写攻略,点个赞再走嘛