如果传项目到服务器仓库里面,上传项目到Maven中央仓库

本文详细记录了将修改后的开源库代码部署到中央Maven仓库的过程,包括注册、设置复杂的密码、配置pom.xml、生成JavaDoc和GPG签名、解决403和401错误等问题。强调了自动关闭和发布的重要性,并提供了避免常见错误的建议。
摘要由CSDN通过智能技术生成

背景

修改了某个开源库的代码,以适应自己的项目情况。之前是临时发布到 github 静态页面去的,现在 github 访问很不稳定,所以需要发布到中央仓库。

注册帐号

密码设置十分变态,12位,必须包含大小写数字特殊字符,有必要拿小本本记一下。而且最好不要设置在 xml 中需要转义的特殊字符,比如 &,否则后面配置 xml 时还要转义!不要问我为啥知道的。。

Jira申请

点击新建按钮,提一个 issue,只有申请通过了才有可能上传到中央仓库上,一般 5 分钟左右会有回应,我昨晚 10 点左右申请的,不知道是不是时差问题他们回应比较快:

93c3e9ce0313

创建 issue

93c3e9ce0313

创建 issue

有几个比较重要的地方说明:

1.问题类型一般选 New Project

2.Group Id 的几点要求

如果是域名的话需要提供证明,或者把你的域名暂时重定向到你的 github主页,这样可以验证,比较麻烦

会推荐使用 io.github.xxx (xxx 是你的 github 账户名)

com.github.xxx 不能用了

xxx 还需要跟下面的 Project URL 中的账户名对应,比如我这里账户名是 linceln,那么如果我的 Group Id 设置为 io.github.lince 也会审核不通过

93c3e9ce0313

我最早用 jiatu.com 这个域名申请不通过

93c3e9ce0313

io.github.lince 也无法审核通过

上传

https://central.sonatype.org/publish/publish-maven/

我这次是上传到 Apache Maven,所以接下来的步骤都是参考以上链接做的,从晚上 9 点一直试到夜里 1 点才搞定,中间踩坑经历稍后会记录一下。

Nexus Staging Maven plugin

配置部署到 OSSRH Nexus Repository Manager 的插件,在 pom.xml 中配置插件:

org.sonatype.plugins

nexus-staging-maven-plugin

1.6.7

true

ossrh

https://s01.oss.sonatype.org/

true

此处照抄,所有东西不要去动它,比如 serverId。

然后添加仓库管理,id 也不要去改动:

ossrh

https://s01.oss.sonatype.org/content/repositories/snapshots

ossrh

https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/

setting.xml

配置 server,注意,这里的 id 和上面配置的 nexus-staging-maven-plugin 和 distributionManagement 的 id 保持一致,然后填入帐号密码:

ossrh

linceln

xxxxxxxxxxx

Javadoc and Sources 插件

JavaDoc 是必须的,因为这个生成时间很长,有的项目会选择打包时跳过 JavaDoc,但是这样最后会导致可以上传到 sonatype.org,但是无法同步到中央仓库,白忙活一场。

org.apache.maven.plugins

maven-source-plugin

2.2.1

attach-sources

jar-no-fork

org.apache.maven.plugins

maven-javadoc-plugin

2.9.1

attach-javadocs

jar

GPG 签名组件

org.apache.maven.plugins

maven-gpg-plugin

1.5

sign-artifacts

verify

sign

有一步比较关键的是要把公钥上传到公共服务器上,这样我们在上传Jar包等文件时对方可以从公共服务器上下载到并且验证你加密过的文件:

# 给公共服务器上传公钥

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

# 验证对方是否接收

$ gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys

打包部署

$ mvn clean deploy -Dskiptests

部署成功:

93c3e9ce0313

部署完成

闭坑指南

1. 注意部署的地址变了,看很多之前的教程还是用 https://oss.sonatype.org 这个地址,然后上传就报 403。

93c3e9ce0313

注意地址变化

2. 401 Unauthorized

这个基本都是帐号密码的问题,检查一下帐号密码是否填对了。另外注意 setting.xml 配置的 标签,id 是否和 nexus-staging-maven-plugin 和 distributionManagement 配置的 id 一致:

ossrh

linceln

xxxxxxxxxx

3. 有的教程会教你使用 org.sonatype.oss:oss-parent:7 这样的配置,这样你就完全不用配置了,但是官方已经标记这个方法不推荐使用了,默认还是上传到 https://oss.sonatype.org,报 403。

org.sonatype.oss

oss-parent

7

————————————————

版权声明:本文为CSDN博主「VF」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/tiger435/article/details/50470316

93c3e9ce0313

官方不推荐使用 oos-parent

4. 记得生成 JavaDoc 和 gpg签名,否则虽然可以上传,但是在 https://oss.sonatype.org/#stagingRepositories close 时报错,无法同步到中央仓库,还要重新来过。

93c3e9ce0313

保证上传的文件齐全

5. 以前上传完还需要手动 close 和 release,现在 Nexus Staging Maven Plugin 插件可以配置自动执行这个过程。

回到https://oss.sonatype.org/#stagingRepositories,选中刚才发布的构件,并点击上方的close–>Confirm,在下边的Activity选项卡中查看状态,当状态变成closed后,执行Release–>Confirm,并在下边的Activity选项卡中查看状态,成功后构件自动删除,一小段时间(约1-2个小时)后即可同步到maven的中央仓库。

————————————————

版权声明:本文为CSDN博主「VF」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/tiger435/article/details/50470316

93c3e9ce0313

现在 close 和 release 自动化了

注意,如果没有 JavaDoc 或者 GPG 签名,这一步无法完成,就会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值