目录
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
代码语言:javascript复制修改maven的setting.xml文件
<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>
代码语言:javascript复制修改项目的pom文件,下边是我自己的配置,项目描述、开发者信息、SCM信息 自行修改
<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/