手把手教你如何上传自己的组建到maven中央仓库

在java开发中,为了避免重复造轮子,我们可以复用别人开发的软件为我所用,直接用maven引入依赖即可,有非常牛逼的比如springboot、netty、mybatis等等,作为一个Java程序员怎么能没有自己的软件发布到maven仓库呢,接下来我手把手教大家如何发布自己项目为大家所用。

教程里面使用的是我开发的qRPC框架,感兴趣的同学建议点赞+收藏+关注,代码仓地址:qRPC

准备工作

  1. 到sonatype注册一个账号,https://issues.sonatype.org/secure/Signup!default.jspa
  2. 注册完成之后创建问题单
    image.png

项目选择:Community Support - Open Source Project Repository Hosting (OSSRH)

问题类型选择:New Project

  1. 填写必要的信息

image.png
创建issue的时候需要填写下面这些信息:

  • Description 项目描述
  • Group Id 组织名,个人项目貌似只支持io.github.用户名的形式,比如我发布的io.github.barackyoung
  • Project URL 在代码管理平台项目的地址
  • SCM url 项目的git地址
  1. 完成之后会有邮件提醒你,然后你点response,找不到的话好像不点也行,我就找不到这个按钮。

image.png
5. 点进你刚刚创建的问题,底部会有活动信息,会要求你做一个验证,验证你的代码仓,你需要在你的github上创建一个与问题单同名的问题单,然后点验证。

image.png

image.png

像我就创建了一个OSSRH-93312的代码仓,这一步貌似也不是必须的。
到此为止,准备工作完成。

安装PGP,创建密钥并向公共服务上传公钥

我是在linux下面操作的,安装PGP后3行命令解决(安装PGP一行命令,若没有安装运行时会提醒你怎么安装)

  • gpg --gen-key
  • gpg --list-keys

image.png

  • gpg --keyserver keyserver.ubuntu.com --send-keys 秘钥ID,密钥ID就是第二步中的pub部分,6730…那一串

配置maven

  1. 如果你还未安装maven,先下载安装maven,配置好环境变量,打开settings.xml文件(一般在你的maven home下的conf目录下),打开后在中加入以下内容:
    <server>
      <id>oss</id>
      <username>sonatype用户名</username>
      <password>sonatype密码</password>
    </server>   

这里的账户名和密码就是之前注册的账号密码。

  1. 配置项目的pom文件,加入以下内容:
    ```
<licenses>
    <license>
        <name>The Apache Software License, Version 2.0</name>
        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
        <distribution>repo</distribution>
        <comments>A business-friendly OSS license</comments>
    </license>
</licenses>

<scm>
    <tag>main</tag>
    <url>https://github.com/BarackYoung/qRPC.git</url>
    <connection>scm:https://github.com/BarackYoung/qRPC.git</connection>
    <developerConnection>scm:git:git@github.com:BarackYoung/qRPC.git</developerConnection>
</scm>

<developers>
    <developer>
        <name>Lianhuan Yang</name>
        <email>1330292703@qq.com</email>
        <url>https://github.com/BarackYoung/</url>
    </developer>
</developers>

<distributionManagement>
    <snapshotRepository>
        <id>oss</id>
        <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
        <id>oss</id>
        <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
</distributionManagement>

<build>
    <plugins>
        <!-- Source -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.2.1</version>
            <executions>
                <execution>
                    <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>2.10.4</version>
            <configuration>
                <additionalparam>-Xdoclint:none</additionalparam>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- GPG -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <configuration>
                <gpgArguments>
                    <arg>--pinentry-mode</arg>
                    <arg>loopback</arg>
                </gpgArguments>
            </configuration>
            <executions>
                <execution>
                    <id>sign-artifacts</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>sign</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

scm和developers替换成你自己的,其他部分复制粘贴就行。

上传到sonatype

以上准备工作都准备完毕了,接下来就是上传,非常简单,在项目目录下执行以下命令即可。

    mvn clean deploy

执行过程中会让你输入一个密码,随便输入一个即可。最后会看到build success,上传到sonatype成功。

image.png

上传到maven仓库

打开https://s01.oss.sonatype.org/#welcome ,用之前注册的账号登陆

  1. 点击[staging repostory]刷新后就能看到刚刚上传的组件。
    image.png
  2. 点击close,描述随便输入,开始检验,下面activity可以查看校验进度
  3. 校验完成之后点release,等待几小时后就同步到中央仓库了。

避坑

  1. 上传snapshot版本时刚刚打开的地址找不到上传的项目,pom里面的版本要把snapshot删掉。
  2. maven要使用jdk而不是jre,最好是下载jdk然后配置环境变量,lunix上不要直接apt install java命令。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值