前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >发布maven项目至中央仓库终极教程与疑难问题汇总解决帖

发布maven项目至中央仓库终极教程与疑难问题汇总解决帖

作者头像
code2roc
发布2023-07-19 14:32:15
3720
发布2023-07-19 14:32:15
举报

最近写了个maven项目想要打包上传到maven中央仓库方便开源调用,网上教程看了不少,坑也填了不少,在这里做一个详细的教程,让大家少花时间,快速高效的完成项目打包上传。

1.访问工单系统https://issues.sonatype.org/secure/Dashboard.jspa,注册账号新建问题

新建的问题选项与图中标红保持一致,接下来还有4项必填项

Summary:你的jar包自己起个名字(无要求)

Group Id:项目标识

注:这里的标识不是和你项目中一致的,而是你的项目所在的域名,如果你随便填的话,就会收到邮件确认是否拥有域名,如果是个人的可以挂在开源网站下,我是挂在码云下的,就可以填写如下:com.gitee.你的码云id

Project URL:项目地址

SCM URL :项目clone的git地址

审核通过后会收到这样一封邮件,说明你的问题通过了

注:很多教程里说查看自己提的问题的状态为Fixed就通过了,但是没说怎么查找,点击Issues,就会出现近期问题,你就可以查到自己的了,如下图:

2.安装gpg并上传公钥

就是安装一个密钥生成工具,生成密钥,上传公钥到密钥服务器,因为官网下的太慢,我这里提供一个安装包https://download.csdn.net/download/u013407099/10897615

安装完后,打开电脑的cmd命令行,输入gpg --gen-key,填写姓名和邮箱,然后输入密钥密码,密钥就会生成成功,展示出如下信息

然后将生成好的密钥上传到密钥服务器,输入命令

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys xxxxx(上面生成的密钥标识)

pool.sks-keyservers.net这个代表的是密钥服务器地址(就按我的来就可以,复制就完事了)

注:密钥上传后各个密钥服务器需要同步,可能会导致后续的验证出现无法找到public key的提示,如果你多等一会也是可以的

解决方案:https://stackoverflow.com/questions/19462617/no-public-key-key-with-id-xxxxx-was-not-able-to-be-located-oss-sonatype-org

3.进行maven项目的打包生成配置(重点)

pom文件一定要包含以下几个内容

说明:

代码语言:javascript
复制
    <name>fastorm</name>
    <description>fastorm is a lightweight database operate util</description>
    <url>https://gitee.com/grassprogramming/FastORM_Java/</url>

证书:

代码语言:javascript
复制
   <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

scm:

代码语言:javascript
复制
 <scm>
        <tag>master</tag>
        <url>git@https://gitee.com/grassprogramming/FastORM_Java.git</url>
        <connection>scm:git:git@https://gitee.com/grassprogramming/FastORM_Java.git</connection>
        <developerConnection>scm:git:git@https://gitee.com/grassprogramming/FastORM_Java.git</developerConnection>
    </scm>

开发者信息:

代码语言:javascript
复制
    <developers>
        <developer>
            <name>ypeng</name>
            <email>yanpeng19940119@vip.qq.com</email>
            <organization>https://gitee.com/grassprogramming</organization>
        </developer>
    </developers>

打包配置(重点,抄就完事):

代码语言:javascript
复制
<profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <!-- Source -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>2.2.1</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- Javadoc -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.9.1</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- GPG -->
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>1.5</version>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

上传打包文件配置:

代码语言:javascript
复制
<distributionManagement>
        <snapshotRepository>
            <!-- 这个id需要在setting.xml中设置  -->
            <id>oss</id>
            <name>OSS Snapshots Repository</name>
            <!-- 这里的url就是Issue中回复的snapshots 的repo地址-->
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>oss</id>
            <name>OSS Staging Repository</name>
            <!-- 这里的url就是Issue中回复的staging 的repo地址-->
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

这里的配置的id名称,要在maven的setting.xml文件中配置(不知道文件在哪里的找到maven安装目录,conf文件夹下)

代码语言:javascript
复制
	 <server>
            <id>oss</id>
            <username>admin</username>
            <password>admin123</password>
     </server>

注:这里的username是你一开始注册账号的username,而不是注册时填写的邮箱,下图邮件标注部分

4.进行打包上传

打开cmd,进入到pom文件的统计目录,输入mvn clean deploy -P release,这个地方的release就是上面打包配置中的id,所以直接复制就好,打包会运行一会然后出现upload信息,最后提示BuildSuccess说明打包并上传成功了。

注:打包的时候会遇到一个坑,可能会提示javadoc,IllegalArgumentException,这是因为环境变量classpath配置了%JAVA_HOME%类似的非法字符串,所以需要把这些删除,如果删了对你的电脑有影响,改成决对路径既可以,这里指的是classpath中的所有,不单单指java部分的,需要全部改掉,然后重启cmd运行之前的打包命令既可以

5.进行上传包的验证和发布

打包完成后登陆https://oss.sonatype.org/#stagingRepositories,使用之前注册的用户名密码,注意登陆的用户名是UserName而非邮箱,进入后点击Staging Repositories查看自己上传的jar包

注:很多教程只告诉我们点了这个找上传的jar,但是却没有说怎么找,搜索按各种东西都也搜不到,这里给大家总结下,加载出列表后,拉到最下方,选择上传时间和你的一致的(一般就是最新的一个),勾选中,查看Owner是否是你自己(这是我找了一个小时总结出来的经验教训),如下图

勾选中上传的jar包,点击close,系统会进行验证,验证不通过会在activity中有提示,一般就是上文提到的没有找到publickey问题,验证通过后会变成closed,然后点击release发布初始版本,这时候需要先回复你之前问题通过的工单,因为之前邮件明确说明了,工作人员会审核你发布的版本,1-2个工作日就可以在maven中央仓库搜索到了。

注:你的issue的groupid要与你的maven项目的groupid一致!否则release时会提示403拒绝访问!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档