上传发布jar到maven中央库

作为一个小菜鸟,有时羡慕大佬们有自己代码封装jar包,在项目中引入依赖即可使用,现在就来学习如何发布jar。

1.注册JIRA账号

注册地址:https://issues.sonatype.org/secure/Signup!default.jspa
账号密码后面需要用到,邮箱用来接收消息进度反馈。

2. 创建issue

登录JIRA后,点击新建按钮
在这里插入图片描述
项目选址:Community Support - Open Source Project Repository Hosting (OSSRH)
问题类型选择:New Project
概要:填写代码的概述,或者随便填写都行,概要和描述填写可以宽泛一些,审核不是很严格
Group Id:填写拥有所有权的域名(例:cn.arnohand.xxxx),如没有域名可以查看:http://central.sonatype.org/pages/choosing-your-coordinates.html
Project URL:项目github地址
SCM url:项目github资源地址
Already Synced to Central:默认不变

只填写必填项即可,信息填完后直接点击确认即可。创建完成后Central OSSRH会在创建的issue下评论并给账户填写的邮箱发送邮件(有可能会因为有时差,需要等一天)。
在这里插入图片描述
这个可以用谷歌翻译下。大概意思如下:
您是否拥有arnohand.cn域? 如果是这样,请通过以下方法之一验证所有权:
引用此JIRA票证将TXT记录添加到DNS中:OSSRH-53063(最快)
设置重定向到您的Github页面(如果尚不存在)

如果您不拥有此域,请阅读:
http://central.sonatype.org/pages/choosing-your-coordinates.html
您也可以选择一个反映项目托管的groupId,在这种情况下,类似于io.github.arnohand或com.github.arnohand

这里要验证域名所有权,因为这是我自己的域名,所以我直接添加txt记录,记录值就是issues的url地址。
在这里插入图片描述
添加完成后需要评论回复,可访问https://issues.sonatype.org/browse/OSSRH-53063直接进入该issues。

审核成功后issues的状态变为RESOLVED:
在这里插入图片描述
并Central OSSRH会评论回复:
在这里插入图片描述

3.下载gpg

Windows系统直接去https://www.gpg4win.org/download.html下载gpg,安装完成后可通过gpg --version查看版本信息。出现版本信息则安装成功(Linux,可以通过yum install gpg安装)。

查看版本

gpg --version

在这里插入图片描述
生成GPG密钥对,密码发布jar时需要使用

gpg --gen-key

在这里插入图片描述
上传GPG公钥,B6E1F62DEF3F2A036EBC13924DF32C613C0108EB为密钥的ID

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys B6E1F62DEF3F2A036EBC13924DF32C613C0108EB

查看GPG密钥对

gpg --list-keys

4. 配置Maven的setting.xml

打开Maven的setting.xml文件,在servers中加入以下配置,这样我们才能将jar包部署到Sonatype OSSRH仓库

<server>
        <id>ossrh</id>
        <username>JIRA账户的账号</username>
        <password>JIRA账户的密码</password>
</server>

5. 配置项目的pom.xml

根据Sonatype OSSRH的要求,以下信息都必须配置:

  • Supply Javadoc and Sources
  • Sign Files with GPG/PGP
  • Sufficient Metadata
    • Correct Coordinates
    • Project Name, Description and URL
    • License Information
    • Developer Information
    • SCM Information

pom.xml文件仅供参考,根据需要修改即可:

<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">
    
   <licenses>
        <license>
            <name>Server Side Public License</name>
            <url>https://www.mongodb.com/licensing/server-side-public-license</url>
            <distribution>repo</distribution>
            <comments>A not business-friendly OSS license</comments>
        </license>
    </licenses>
    <scm>
        <tag>master</tag>
        <url>git@github.com:ArnoHand/modules.git</url>
        <connection>scm:git:git@github.com:ArnoHand/modules.git</connection>
        <developerConnection>scm:git:git@github.com:ArnoHand/modules.git</developerConnection>
    </scm>
    <developers>
        <developer>
            <name>Arno</name>
            <email>arnohand@163.com</email>
            <organization>Arno</organization>
        </developer>
    </developers>
    
    <profiles>
        <profile>
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>3.1.0</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <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>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <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>
            <distributionManagement>
                <snapshotRepository>
                    <id>ossrh</id>
                    <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
                </snapshotRepository>
                <repository>
                    <id>ossrh</id>
                    <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
                </repository>
            </distributionManagement>
        </profile>
    </profiles>
</project>

执行mvn clean deploy命令发布

mvn clean deploy

6.发布jar

使用JIRA账户登录https://oss.sonatype.org,登录成功后点击Staging Repositories或直接访问https://oss.sonatype.org/#stagingRepositories查看发布的jar。

选中对应的repository,点击colse按钮,close时会检查发布的构件是否符合要求。若符合要求,则close成功,成功之后点击箭头所指的release,即可正式将jar包发布到Sonatype OSSRH仓库。release成功大概2个小时之后,就会同步到Maven中央仓库。在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值