前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于把自己的Jar包开源到Maven仓库的问题

关于把自己的Jar包开源到Maven仓库的问题

作者头像
全栈开发日记
发布2022-05-13 15:20:48
7330
发布2022-05-13 15:20:48
举报
文章被收录于专栏:全栈开发日记

目录

1- 注册sonatype账号 2- 新建issue 3- 与Central OSSRH的一次次battle 4- 处理回复信息 5- 登录Nexus Repository Manager 6-上传前的一些配置 7- 上传

注册sonatype账号

首先要做的是申请上传资格,就是要在sonatype平台上进行申请。注册成功后,登录,然后会提示选择语言,这个时候就可以选择中文了,下文截图均为中文页面。

温馨提示:Username不要用中文!不要用中文!不要用中文!否则会导致审核失败。

附网址:https://issues.sonatype.org/secure/Signup!default.jspa

新建issue

点击导航栏中的【新建】就可以了

然后填写简单的概要和描述

重要的来了!注意以下三项的填写,这是重点:

Group Id

如果你拥有自己的域名,并且可以正常使用,这里可以域名倒写,eg:cn.sx.yys

如果你没有属于自己的域名,建议使用github的域名,eg:io.github.myusername

Project URL

这里是你的仓库地址,eg:https://gitee.com/admin_yys/yuan-shuai-email

SCM url

这里是仓库的git地址,eg:https://gitee.com/admin_yys/yuan-shuai-email.git

然后点击新建就可以了

与Central OSSRH的一次次battle

新建好issue后就是等待审核的漫长时间,由于时差原因,一般第二天才能收到通知(PS:咱们在工作的时候,人家在睡觉)

审核结果、问题描述和解决方案 会发送到你的邮箱中,你也可以登录官网查看,毕竟有问题要是要修复后重新提交审核的。

下滑,在 活动日志-注释 就可以清晰查看他的留言,不过要注意都是英文

我这的问题是需要验证我本人拥有这个域名,这个需要给域名配置一个解析到这个issue。并且要将这个域名配置一个重定向到git仓库,这个可以使用nginx处理。

处理回复信息

我上边遇到的问题基本是每个人都会有的,其他问题可能就是填写不规整的原因了,具体自己翻译解决就行。下面我们看一下这常见的两个问题。

第一个就是要添加一个域名解析:

记录类型:TXT

主机记录:@

记录值:https://issues.sonatype.org/browse/issue编号

issue编号是唯一的,你可以在这个地方查看

第二个是要将域名重定向到你的仓库地址,你可以直接给域名添加一个CNAME解析,或者使用nginx来转发,nginx配置如下:

代码语言:javascript
复制
#在此之前你要确定你是否有一个记录类型为A,主机记录为@的解析记录到你的服务器ip
server{
listen 80;
      #yys.sx.cn修改为自己的域名
server_name yys.sx.cn;
      #https://gitee.com/admin_yys修改为自己的仓库地址
rewrite ^/(.*) https://gitee.com/admin_yys permanent;
}

完成以上配置后,你就可以登录官网找到你的问题,点击备注,硬气的回复:我拥有此域名并设置了DNS解析;或者是:I own the domain name and set up DNS resolution.

审核通过以后会收到这样的回复

登录Nexus Repository Manager

要使用刚通过审核的sonatype账号登录,你要先把你的jar包上传到这个仓库,然后再通过这个仓库推送到maven仓库。

附网址:https://s01.oss.sonatype.org/#welcome

你上传的jar将会暂存到这里

上传前的一些配置

本地安装GPG,并生成密钥对

注:发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性。

下载安装gpg4win,地址:https://www.gpg4win.org/download.html

接下来就是傻瓜式安装了

验证是否安装成功:gpg --version

生成密钥对:gpg --gen-key,箭头指向都需要填写,passphrase相当于密钥的密码,后期要用到

查看生成的密钥:gpg --list-keys,红线框住的地方就是公钥ID了

将公钥发布到gpg密钥服务器,两个都试一试,有一个不会成功

代码语言:javascript
复制
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 公钥ID
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 公钥ID

查询公钥是否发布成功

代码语言:javascript
复制
gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 公钥ID
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 公钥ID

修改maven的setting.xml文件

代码语言:javascript
复制
<servers>
  <server>
      <id>ossrh</id>
      <username>Sonatype账号</username>
      <password>Sonatype密码</password>
  </server>
</servers>

<profiles>
  <profile>
        <id>ossrh</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <gpg.executable>gpg2</gpg.executable>
            <gpg.passphrase>the_pass_phrase</gpg.passphrase>
        </properties>
    </profile>
</profiles>

修改项目的pom文件,下边是我自己的配置,项目描述、开发者信息、SCM信息 自行修改

代码语言:javascript
复制
<groupId>cn.sx.yys</groupId>
<artifactId>YuanShuai-Commons</artifactId>
<version>1.0</version>
<packaging>jar</packaging>

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.source>${java.version}</maven.compiler.source>
    <maven.compiler.target>${java.version}</maven.compiler.target>
    <maven.deploy.skip>true</maven.deploy.skip>
</properties>

<dependencies>
  ...
</dependencies>

<!-- 项目描述 -->
<name>YuanShuai-Commons</name>
<description>Tool package created by YuanShuai</description>
<url>https://gitee.com/admin_yys/yuan-shuai-commons</url>

 <!-- 许可证信息 -->
<licenses>
    <!-- Apache许可证 -->
    <license>
        <name>The Apache Software License, Version 2.0</name>
        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
</licenses>

<!-- 开发者信息 -->
<developers>
    <developer>
        <name>yuanshuai</name>
        <email>apeblog@163.com</email>
        <url>https://gitee.com/admin_yys/</url>
    </developer>
</developers>

<!-- SCM信息 -->
<scm>
    <connection>scm:git:git://gitee.com:admin_yys/yuan-shuai-commons.git</connection>
    <developerConnection>scm:git:ssh://gitee.com:admin_yys/yuan-shuai-commons.git</developerConnection>
    <url>https://gitee.com/admin_yys/yuan-shuai-commons/tree/master</url>
</scm>

<build>
    <plugins>
        <!-- 要生成Javadoc和Source jar文件,您必须配置javadoc和源Maven插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>2.2.1</version>
            <configuration>
                <attach>true</attach>
            </configuration>
            <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-javadoc-plugin</artifactId>
            <version>2.9.1</version>
            <configuration>
                <attach>true</attach>
                <!-- 解决控制台乱码 -->
                <charset>UTF-8</charset>
                <encoding>UTF-8</encoding>
                <docencoding>UTF-8</docencoding>
            </configuration>
            <executions>
                <execution>
                    <id>attach-javadocs</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <!-- 必须配置GPG插件用于使用以下配置对组件进行签名 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.0</version>
            <configuration>
                <skip>false</skip>
            </configuration>
            <executions>
                <execution>
                    <id>sign-artifacts</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>sign</goal>
                    </goals>
                    <configuration>
                        <!-- 这个地方要更换为自己的十六进制格式的签名 keyid 的最后 8 个字符,
              执行命令
               gpg --list-signatures --keyid-format 0xshort
              然后在 sig 3 开头的一行可以看到这个信息
            -->
                        <keyname>0x6D2F5255</keyname>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <!-- deploy插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
            <configuration>
                <!--解决 maven deploy Skipping artifact deployment 的问题-->
                <skip>false</skip>
            </configuration>
        </plugin>
    </plugins>
</build>

<!-- 注意此处的id要与maven的setting.xml中的server配置的一致 -->
<distributionManagement>
    <snapshotRepository>
        <id>ossrh</id>
        <url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
        <id>ossrh</id>
        <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
</distributionManagement>

上传

配置好后就可以deploy上传jar了,上传的时候需要添加你创建密钥是输入的密码。

上传成功后是这个亚子的,它会暂存在sonatype的仓库中。

然后点击close,这个是否会对你上传的文件进行审核。

审核通过是这个亚子的,不通过的话可以点击下方的Activity查看详情进行调整。

审核通过后就可以点击Release进行同步到中央库了。

一般会在四个小时内同步成功,静静等待就好了。

中央库地址:https://repo1.maven.org/maven2/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 注册sonatype账号
  • 新建issue
  • 与Central OSSRH的一次次battle
  • 处理回复信息
  • 登录Nexus Repository Manager
  • 上传前的一些配置
  • 上传
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档