时间:2021-05-19
详细描述maven中央仓库发布jar包的中间过程, 以及遇到的一些问题汇总, 尽量用文字描述清楚, 耐心看下去, 就一定会发布成功
----Sonatype篇----
名词解释:
Sonatype Nexus: Sonatype Nexus helps software development teams use open source so they can innovate faster and automatically control risk
maven社区唯一指定的仓库地址为: https://search.maven.org/ 所以, 我们现在用的远程仓库地址, 无论是哪个, 都是需要去这个仓库同步index的, 然后在把依赖同步到自己的仓库下面
整个maven仓库网络是一个拓扑型架构, 仓库与仓库之间可以互相依赖, 且互相索引
如果想上传jar到公服仓库, 那么首先要打通的就是sonatype, 我们首先去sonatype官网注册个账号, 访问https://issues.sonatype.org/secure/Dashboard.jspa这个地址是sonatype
控制台, 如果未登录, 则会先跳转到登录界面, 点击注册, 填写相关信息, 注册个账号然后登录
1. 进入控制台之后, 点击新建按钮, 新建一个问题(issue)
project 选择community support -open source....issue 选择new projectsummary 填写一些项目简短描述description 填写项目的描述group id 这个最重要了, 要与你的工程pom文件里的顶级group id 一致, 而且这个是不能乱填的, 一般来说, 是你自己的域名反写Project URL 进入到你项目的url, 假如你的项目在github上, 先进到你的项目中, 然后复制地址栏上的地址填进去就可以SCM url 同上, 但是这个url要填写你的git资源下载地址, 就是项目右侧的clone&download那个按钮弹出来的地址Username(s) 用户名Already Synced to Central 默认选NO就可以, 因为暂时我们还不需要同步到中央仓库2. 等待ISSUE审批, 一般来说, 2分钟左右, 你就会收到审批结果(同时会给你的邮箱发邮件), 告诉你, 要验证你的域名, 也就是你的
group id对应的域名, 会通过以下几种方式验证这个域名是不是你的Central OSSRH updated OSSRH-xxxxx:---------------------------------- Status: Waiting for Response (was: Open)Do you own the domain gomyck.com? If so, please verify ownership via one of the following methods:* Add a TXT record to your DNS referencing this issue (Fastest)* Setup a redirect to your Github page (if it does not already exist)* Send an email to central@sonatype.com referencing this issue from a gomyck.com email addressIf you do not own this domain, please read:http://central.sonatype.org/pages/choosing-your-coordinates.htmlYou may also choose a groupId that reflects your project hosting, in this case, something like这个里面告诉你, 最快的办法就是在你的域名解析中, 添加一条text记录, 我当时就是用的这种方式, 具体操作如下:
如果填的没问题的话, 大概10分钟左右, 你就会收到审核通过的消息, 告诉你可以上传资源了
com.gomyck has been prepared, now user(s) gomyck,mzxc can:Deploy snapshot artifacts into repository https://oss.sonatype.org/content/repositories/snapshotsDeploy release artifacts into the staging repository https://oss.sonatype.org/service/local/staging/deploy/maven2Promote staged artifacts into repository 'Releases'Download snapshot and release artifacts from group https://oss.sonatype.org/content/groups/publicDownload snapshot, release and staged artifacts from staging group https://oss.sonatype.org/content/groups/stagingplease comment on this ticket when you promoted your first release, thanks他告诉你, 如果你提交了版本, 最好告诉他一下, 不用管, 以后我们也不会理他的
----GPG篇----
使用 GPG 生成密钥对
Windows下载 Gpg4win 软件来生成密钥对, 地址:https://pile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> <configuration> <!-- 你的秘钥ID --> <keyname>${gpg.keyname}</keyname> <passphraseServerId>${gpg.keyname}</passphraseServerId> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> </plugins></build><distributionManagement> <repository> <id>sonatype-nexus-staging</id> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> <snapshotRepository> <id>sonatype-nexus-snapshots</id> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> </snapshotRepository></distributionManagement>
在你的settings.xml中加入以下配置
<server> <id>sonatype-nexus-snapshots</id> <username>sonatype账号</username> <password>sonatype密码</password></server><server> <id>sonatype-nexus-staging</id> <username>sonatype账号</username> <password>sonatype密码</password></server><profiles> <profile> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <gpg.keyname>你的秘钥 ID</gpg.keyname> </properties> </profile></profiles>运行deploy, 如果按照我的步骤一步一步走, 应该没有错误(如果报错也是你的doc问题, 按照提示一步一步改好, 否则maven审核会失败)
----nexus篇----
如果上一步没有错误的话, 访问网址: https://oss.sonatype.org/#stagingRepositories
点击右上角登录, 账号密码就是sonatype的账号密码, 登录进去之后, 点击Staging repositories
在右侧搜索框输入你的group id, 然后点击refresh, 就会看到你的提交信息
选中, 点击close, 这时当前的纪录就会变成一个小齿轮, 表示nexus在校验你的jar
按照剧本, 你的提交应该会全部通过(图标显示数字就是失败, 反之则是成功)
再次选中当前记录, 点击release, 就会上传成功了, 这时sonatype会给你发邮件
以后你只需要按照maven篇deploy, 然后在使用nexus篇提交release就可以了
注意: 如果是snapshot版本, 则不需要审核, 直接deploy就可以直接引用, 但是在maven仓库(https://search.maven.org/)是搜索不到的
----爬坑篇----
1.一开始总是提示文件验证签名失败, 提示我说没有在秘钥仓库找到对应的公钥, 但是我本地可以确定的是提交了且ID一致, 后来过了大概1小时, 验证忽然就过了,
这期间, 我把nexus提示的秘钥仓库地址都复制出来, 挨个上传我的公钥, 最后不知道是哪个仓库生效了, 但是我觉得是仓库延迟问题
2.以后写代码一定要把doc写好, 不然遇见这种场景, 简直就是折磨, 尤其doc多的时候
3.如果你有多个gpg秘钥, 一定要指定秘钥ID, 不然gpg插件是秘钥环的顺序来对你的工程签名的, 这会导致你上传的公钥不一定对应的上签名的私钥, 秘钥的ID请在settings.xml中配置profile, gpg插件的配置请到apache-gpg官网看
4.sonatype在国内环境下, 访问非常困难, 建议找个科学上网的方式, 来实践本教程
到此这篇关于如何把JAR发布到maven中央仓库的几种方法的文章就介绍到这了,更多相关JAR发布到maven中央仓库内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
详解如何将本地JAR包添加到本地Maven仓库中有些时候,当我们需要在自己的maven工程中添加一个确定的jar而发现Maven中央仓库不存在时,但是我们自己手
Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法:1.安装到本地仓库第一种方法比较常规,适用于需要添加的jar包也是由maven项
maven设置使用自定义的jar包到自己在Maven框架里,查找依赖包的顺序:1.先在本地仓库找,有就返回,没有继续第二步;2.到中央仓库http://sear
在日常生活中,我们使用maven下载需要的jar包,但是很多的时候由于中央仓库没有,所以我们没有办法下载到需要的jar包,手动去下载上,然后放入到lib下,然后
前言本文将讲解如何通过Maven生成jar包并安装到本地仓库(包括将当前项目打包安装仓库到本地以及安装从外部获得的单独jar包),完成下面的操作需要安装Mave