首页 > 编程语言 >上传自己java项目到maven中央仓库pom

上传自己java项目到maven中央仓库pom

时间:2023-06-15 16:14:28浏览次数:54  
标签:core java maven pom sonatype https org yhchat

前提

首先的你项目需要在Gitee或者Github上有仓库

我这里以Gitee是的yhchat-sdk-core仓库为例

开始

在sonatype上创建问题

访问sonatype注册并登录

创建一个问题

概要

填仓库名称

描述

随意写写

Group Id

填写自己的域名,如果没有域名的话,可以自行百度使用GiteeGithub的域名

需要根据项目的maven坐标按需填写,与maven项目pom配置一致

Project URL

填仓库地址:https://gitee.com/daenmax/yhchat-sdk-core

SCM url

填仓库Git地址:https://gitee.com/daenmax/yhchat-sdk-core.git

点击创建

然后会有人审核你这个问题,全程跟进,稍等几分钟,就会有评论

添加DNS解析

需要验证组ID域名是否是你的,所以需要添加一条DNS TXT解析

主机记录

OSSRH-92477是你的问题编号,字母改成消息就是主机记录ossrh-92477

记录值

问题页面的地址栏网址就是记录值:https://issues.sonatype.org/browse/OSSRH-92477

解析添加好之后,一般过几分钟生效,

添加完成按钮

因为我这里已经点过了,所以没这个按钮了,具体就是 response 还是 完成 来着,我也忘了,点就行了

如果过几分钟后,状态或者解决结果 变成了:已解决,就代表验证通过了

安装GnuPG软件,并生成签名

下载安装

去官网下载并安装:https://www.gpg4win.org/

创建秘钥

发布秘钥

弹窗提示就代表成功了

配置maven

settings.xml里添加以下内容


<server>
    <id>ossrh</id>
    <username>sonatype账号</username>
    <password>sonatype密码</password>
</server>

如图

项目POM配置

主要就是添加urllicensesscmdevelopersdistributionManagement等节点,具体参考下面我的完整POM文件

需要注意的是,plugins打包插件建议使用和我一样的,或者你自己弄也行,打包时,必须同时打包出来源码文档jar,否则后面的检查无法通过

另外需要注意的是,我们上传的远程仓库的地址是带s01前缀的,而比较旧的文章中不带s01前缀

这是因为旧的sonatype maven仓库已经资源满载了,所以官方新建了一个s01 maven仓库,未来可能还会有s02、s03

现阶段在sonatype JIRA管理平台上注册的用户,只能上传这个新的s01仓库

我的POM示例:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.12</version>
        <relativePath/>
    </parent>
    <groupId>cn.daenx</groupId>
    <artifactId>yhchat-sdk-core</artifactId>
    <version>1.0.0</version>
    <name>yhchat-sdk-core</name>
    <description>
        yhchat-sdk-core是云湖社交的Java版本的SDK核心服务,通过此Core可以快速构建您的云湖机器人,能让您以非常便捷的方式和云湖服务进行交互。
    </description>
    <url>https://gitee.com/daenmax/yhchat-sdk-core</url>

    <properties>
        <java.version>1.8</java.version>
        <spring-boot.version>2.7.12</spring-boot.version>
        <hutool.version>5.8.19</hutool.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- Hutool -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>${hutool.version}</version>
            <optional>true</optional>
        </dependency>
        <!--常用工具类 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

    <!--开源协议...-->
    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
            <comments>A business-friendly OSS license</comments>
        </license>
    </licenses>

    <scm>
        <connection>https://gitee.com/daenmax/yhchat-sdk-core.git</connection>
        <developerConnection>[email protected]:daenmax/yhchat-sdk-core.git</developerConnection>
        <url>https://gitee.com/daenmax/yhchat-sdk-core</url>
    </scm>

    <developers>
        <developer>
            <id>DaenMax</id>
            <name>DaenMax</name>
            <email>[email protected]</email>
            <roles>
                <role>Developer</role>
            </roles>
            <timezone>+8</timezone>
        </developer>
    </developers>

    <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>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.17</version>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.10.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!--生成源码jar包-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- GPG -->
            <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>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release</releaseProfiles>
                    <goals>deploy</goals>
                </configuration>
            </plugin>

            <!-- jdk1.8中必须增加Xdoclint:none,因为1.8 javadoc要求必须严格格式检查,否则会报错-->

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.9.1</version>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <additionalparam>-Xdoclint:none</additionalparam>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


</project>

打包并上传

需要注意以下几点:

1.环境变量里的JDK版本需要和你项目使用的JDK版本一致

2.不要使用IDEA的打包,需要使用CMD命令打包

在项目根目录打开CMD

执行打包命令

mvn clean install deploy -P release

然后会弹出一个框框,然你输入秘钥,这个就是上面说的这个密码一定要记住

如果成功的话,就代表成功了(好像有点废话)

关闭和发行

上面maven命令执行完,我们还需要进行进一步的操作
这是因为我们上传的jar放入了staging暂存库里面,我们需要把它转到release库

这其中sonatype平台会针对你的项目信息、jar文档、源码等内容进行完整性校验

完整性校验不通过的项目是无法转到release的,也就无法同步到maven中央仓库

暂存库登录地址:https://s01.oss.sonatype.org/#stagingRepositories

账号密码和sonatype一样

登录上来后,点击Refresh,就可以看到你刚刚上传的了

如果认为刚刚打包上传错了,那就点击Drop删除,然后重新执行maven打包上传命令

觉得无误后,点击Close,sonatype就会开始扫描和检查你的项目了,

如果检查通过,就点击Release开始发行了,发行成功后,就可以点击Drop删除

如果检查不通过,就点击下面的SummaryActivity来查看为啥不通过

在仓库中查看

至此,就完事了,在 Maven Central 可以立即进行搜索到

Maven Repository大概第二天才能搜索到

(在此期间,无法搜索到也不影响项目中使用坐标引用你的项目)

结束

一切都ok之后,回到Sonatype JIRA管理平台将“问题”关闭,至此,恭喜你~

标签:core,java,maven,pom,sonatype,https,org,yhchat
From: https://www.cnblogs.com/daen/p/17483166.html

相关文章

  • IDEA Spring Boot Maven 多环境
    源码地址:GiteeGitHub后端https://gitee.com/linjiabin100/pi-admin.githttps://github.com/zengpi/pi-admin.git前端https://gitee.com/linjiabin100/pi-admin-web.githttps://github.com/zengpi/pi-admin-web.git多环境的作用在于允许在不同的运行环境中......
  • 50基于java的智能停车场管理系统设计与实现
    ​>本章节给大家带来一个基于java的智能停车场管理系统设计与实现,可适用于java车辆管理,java停车场信息管理平台,小区停车管理平台,小区停车,物业停车管理,智慧停车场管理系统,智慧小区停车场平台,车辆AI识别,车辆识别。项目背景近年来,随着我国经济的快速发展,人们生活水平的不断提高,物......
  • JavaScript开发工具-WebStorm 2023 mac/win版
    WebStorm是一款由JetBrains开发的JavaScript开发工具,是专为JavaScript开发者设计的集成开发环境(IDE)。它提供了强大的功能和工具,能够帮助开发者更高效地编写、调试和维护JavaScript代码。→→↓↓载WebStorm2023mac/win版 WebStorm拥有一套丰富的功能,使得它成为JavaScript开......
  • 创建项目-空项目、java项目、web项目
    空项目(EmptyProject):空项目是一个完全空白的项目,没有任何默认的目录结构或配置文件。你可以根据需要自定义项目的结构和配置,适用于从头开始构建自己的项目。Java项目(JavaProject):Java项目是一个标准的Java应用程序项目,具有默认的目录结构和配置。它包含了源代码目......
  • JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)
    关键字:java面试题基本类型intlongbooleanfloatdoublechar作者:臧圩人(zangweiren)基本类型,或者叫做内置类型,是JAVA中不同于类的特殊类型。它们是我们编程中使用最频繁的类型,因此面试题中也总少不了它们的身影,在这篇文章中我们将从面试中常考的几个方面来回顾一......
  • JAVA面试题解惑系列(四)——final、finally和finalize的区别
    关键字:java面试题finalfinallyfinalize作者:臧圩人(zangweiren)final、finally和finalize的区别是什么?这是一道再经典不过的面试题了,我们在各个公司的面试题中几乎都能看到它的身影。final、finally和finalize虽然长得像孪生三兄弟一样,但是它们的含义和用法却是......
  • 如何通过Java中的对象值来同步块
    问题有时,我们需要通过变量的值来同步代码块。为了解这个问题,我们将考虑一个简单的银行应用程序,它对客户的每次转账进行以下操作:通过此外部Web服务转移评估现金返还金额(CashBackService)在数据库中执行汇款(AccountService)更新现金返还评估系统中的数据(CashBackService)汇款操作如下:pub......
  • [从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)
    jQuery片段:1.(function(){2.//这里忽略jQuery所有实现3.})();当一个匿名函数被括起来,然后再在后面加一个括号,这个匿名函数就能立即运行起来!真神奇哦!嘿嘿!胡闹到此为止。在这一节,我们碰到的jQuery片段是一组立即运行的匿名函数。而这种用法在论坛上也曾引起过激辩......
  • [从jQuery看JavaScript]-数据类型和对象(Type and Object)(一)
    jQuery片段:1.var2.//Willspeedupreferencestowindow,andallowsmungingitsname.3.window=this,4.//Willspeedupreferencestoundefined,andallowsmungingitsname.5.undefined,6.//MapoverjQueryincas......
  • JavaScript中将字符串转换为数字的七种方法总结 乘以数字: str = '2344'; console.lo
    JavaScript中将字符串转换为数字的七种方法总结乘以数字:str='2344';console.log(str*1)//expectedresult:2344https://www.jb51.net/article/261613.htm+目录1.使用parseInt()2.使用Number()3.使用一元运算符(+)4.使用parseFloat()5.使用Math.floor()6.乘......