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

2022-05-13 15:20:48 浏览数 (1)

目录

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/

0 人点赞