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 注意事项

若不需要模块也上传了,可以在关闭暂存库前删除:
演示图片,不是真的删除

这位帅哥点个赞再走

这么辛苦写攻略,点个赞再走嘛

posted @ 2022-09-16 00:08  凌康  阅读(796)  评论(0编辑  收藏  举报