maven上传至中央仓库 在gitee上写了一个工具包,想让别人也使用,那就不能每次都打包到本地仓库,所以就需要上传至中央仓库。下面就记录一下如何上传到中央仓库
第一步:注册Sonatype账号 Sonatype通过JIRA来管理OSSRH仓库
注册地址:https://issues.sonatype.org/secure/Signup!default.jspa
Username是登录名称,Password为登录密码
第二步:项目发布申请 点击新建
项目要选择“Community Support”项,对应的问题类型选择“New Project”
提交完成之后,会创建一个Issues
过几分钟会有官方审核人员对该Issues进行回复,需要对GroupId进行验证,回复中有两种方式来进行验证
方式一:DNS域名解析中添加一个对应的TXT记录
方式二:如果没有自己的域名,可以使用gitee域名,要求是创建一个对应的公共仓库
这里由于我有域名,就选择了方式一。进行对应操作后,回复评论再将状态置为开启。
在经过一段时间的等待,官方审核人员验证通过后,就会审核完成。
第三步:配置自己的maven项目 发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性。因此,我们需要在本地安装并配置GPG
下载地址 https://gpgtools.org/
下载安装完成后创建
创建完成后会弹出是否上传到公钥,这里要上传,否则maven无法验证gpg密钥
第四步:配置settings.xml 在maven的settings.xml文件中配置对应的sonatype账号
1 2 3 4 5 <server > <id > ossrh</id > <username > Sonatype账号</username > <password > Sonatype密码</password > </server >
第五步:配置项目的pom.xml Sonatype OSSRH校验要求配置描述、url、开源协议、SCM信息以及作者信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 <description > 工作中用到的一些工具</description > <url > https://gitee.com/SiXiangPiaoFuZhe/tools-java</url > <licenses > <license > <name > BSD 3-Clause</name > <url > https://spdx.org/licenses/BSD-3-Clause.html</url > </license > </licenses > <scm > <connection > https://gitee.com/SiXiangPiaoFuZhe/tools-java.git</connection > <url > https://gitee.com/SiXiangPiaoFuZhe/tools-java</url > </scm > <developers > <developer > <name > zhanghe</name > <email > 13512966953@163.com</email > <roles > <role > Developer</role > </roles > <timezone > +8</timezone > </developer > </developers >
配置对应的插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 <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 > <build > <plugins > <plugin > <groupId > org.sonatype.plugins</groupId > <artifactId > nexus-staging-maven-plugin</artifactId > <version > 1.6.8</version > <extensions > true</extensions > <configuration > <serverId > ossrh</serverId > <nexusUrl > https://s01.oss.sonatype.org/</nexusUrl > <autoReleaseAfterClose > true</autoReleaseAfterClose > </configuration > </plugin > <plugin > <groupId > org.apache.maven.plugins</groupId > <artifactId > maven-source-plugin</artifactId > <version > 3.2.1</version > <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-surefire-plugin</artifactId > <configuration > <skipTests > true</skipTests > </configuration > </plugin > <plugin > <groupId > org.apache.maven.plugins</groupId > <artifactId > maven-javadoc-plugin</artifactId > <version > 3.5.0</version > <executions > <execution > <id > attach-javadocs</id > <goals > <goal > jar</goal > </goals > <configuration > <doclint > none</doclint > </configuration > </execution > </executions > </plugin > <plugin > <groupId > org.apache.maven.plugins</groupId > <artifactId > maven-gpg-plugin</artifactId > <version > 1.5</version > <executions > <execution > <id > sign-artifacts</id > <phase > verify</phase > <goals > <goal > sign</goal > </goals > <configuration > <keyname > ${gpg.keyname}</keyname > <passphraseServerId > ${gpg.keyname}</passphraseServerId > </configuration > </execution > </executions > </plugin > </plugins > </build >
第六步:Close&Release操作
这里是<autoReleaseAfterClose>false</autoReleaseAfterClose>
时的操作。建议第一次操作设置为false。
有时上传之后检验可能没过,会报错
Failed to execute goal org.sonatype.plugins:nexus-staging-maven-plugin:1.6.8:deploy (injected-nexus-deploy) on project tools-java: Could not perform action: there are failing staging rules!
上传之后,jar包会放到staging暂存库中,我们需要将其发布到release库
登录 https://s01.oss.sonatype.org/
上述插件上传至staging后会自动将状态置为close,close后系统会进行规则校验
校验通过就可以点击Release来发布至Release,如果检验不通过,就按照提示内容来进行修改
第一次发布成功后,在创建项目的issue上会有新的评论
半小时之内中央仓库中就会存在该依赖了,四小时后再search.maven.org中也就可以搜索到了