发布依赖到maven仓库

news2024/11/17 1:30:56

maven中央仓库是一个开放的仓库,所以我们也可以把自己开发的jar推送到远程仓库,这样可以直接引入pom依赖使用我们的库。

准备工作

● 需要一个github账号(程序员必备)
● 网络代理(涉及到的网站通常没版本在国内直接访问,所以最好使用代理)

其他不需要准备什么了,按照以下的步骤依次执行就行。
主要流程:在github上创建项目 - 注册sonatype账号 - 项目申请 - 安装PGP - 修改仓库信息 - 推送到maven仓库。

在github上创建自己的项目

创建一个项目,设置成public即可。

注册sonatype账号

https://issues.sonatype.org/secure/Signup!default.jspa
在这里插入图片描述

注册的信息没有特殊要求,一般和github账号保持一致,也容易记。
这个网站和我们平常用的jira一样,方便协同合作。

项目申请

新建一个【Community Support - Open Source Project Repository Hosting (OSSRH)】类型的问题,主要用于验证github项目是否有效。
在这里插入图片描述

这个页面中需要填group.id等信息,如下:
在这里插入图片描述

Group Id是自己域名的反写,如果没有域名可以使用github地址,例如:io.github.casuallc。
提示:https://casuallc.github.io/ 这个地址是基于github创建的自己博客的地址,如果没有可以创建下。

Project URL 是github上的项目地址:https://github.com/casuallc/admq-spring-boot-starter
SCM url是git地址:https://github.com/casuallc/admq-spring-boot-starter.git

填写完成后,会有人在这个问题的评论里联系你。

验证Github项目有效性

进入创建的问题,大概等几分钟后就有机器人联系你的,会留下以下的评论。
在这里插入图片描述

这个是让你在github上创建一个空的项目,创建完评论下就行(不评论估计也行,,)。

之后在创建的问题下会有如下评论,表示你已经可以准备发布项目到maven仓库了。
在这里插入图片描述

安装GPG

这个工具是用来加密构建的jar、pom、source和doc的,理论上是必须的,但是我没验证。可以先跳过,如果后边有报错再安装也行。
https://gpg4win.org/ 在这里可以下载对应操作系统安装包,我是在window下安装的,直接点点点就好了。。。
这里有一点需要注意的是,这个网站会让你选择是不是捐赠,有钱的话就捐点,没钱的话不捐也行。
在这里插入图片描述

安装完成后打开,在【文件】中选择【New OpenPGP Key Pair…】
在这里插入图片描述

名字、邮件地址和github上的保持一致吧。
创建完成后:
在这里插入图片描述

然后右键创建好的证书,选择【在服务器上发布】。

修改项目License信息

这个不是必须的,但通常会在pom中添加Apache License信息和一些用户信息。

<licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <connection>https://github.com/casuallc/admq-spring-boot-starter.git</connection>
    <url>https://github.com/casuallc/admq-spring-boot-starter</url>
  </scm>
  <developers>
    <developer>
      <name>clooker</name>
      <email>clooker@163.com</email>
      <roles>
        <role>Developer</role>
      </roles>
      <timezone>+8</timezone>
    </developer>
  </developers>

添加仓库和认证信息信息
在项目的pom.xml中添加以下内容

<profiles>
  <profile>
    <id>release</id>
    <build>
      <plugins>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${maven-javadoc-plugin.version}</version>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <source>8</source>
            <doclint>none</doclint>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.6</version>
          <executions>
            <execution>
              <id>sign-artifacts</id>
              <phase>verify</phase>
              <goals>
                <goal>sign</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.sonatype.plugins</groupId>
          <artifactId>nexus-staging-maven-plugin</artifactId>
          <version>${nexus-staging-maven-plugin.version}</version>
          <extensions>true</extensions>
          <configuration>
            <serverId>ossrh</serverId>
            <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
            <autoReleaseAfterClose>true</autoReleaseAfterClose>
          </configuration>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>

在maven的settings.xml中添加sonatype上注册的账户信息。

<server>
  <id>ossrh</id>
  <username>clooker</username>
  <password>xxxx</password>
</server>

注意:项目pom文件中org.sonatype.plugins插件下的serverId要和maven settings.xml中的id保持一致。

推送项目到maven仓库

执行 maven clean deploy -Prelease
在这里插入图片描述

org.sonatype.plugins 这个插件会自动推送到maven仓库,然后执行close、release操作,不需要手动在https://s01.oss.sonatype.org/上执行了。
之前的流程:
登录https://s01.oss.sonatype.org/,用户名密码和sonatype一样
选择:Staging Repositories
刷新后,选择刚才自己提交的项目,依次点击:Close和Release。
在这里插入图片描述

查看自己的项目

等待一段时间后就能在maven仓库看到自己的项目了,我这里是推送成功就能看到了。
https://s01.oss.sonatype.org/content/repositories/releases/io/github/casuallc/admq-spring-boot-starter/
在这里插入图片描述

其他

需要注意的是release的版本不能相同,也就是已经release的jar就不能修改了,所以每次release需要修改版本号。
如果出现401、403等问题,通常是GPG没有安装好,或者maven-gpg-plugin插件的版本不对,或者是在sonartype上注册账号需要等一段时间才会生效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Computers Graphics(CAG)及Elsevier常见期刊投稿记录

1.期刊地址 Editorial Managerhttps://www.editorialmanager.com/cag/default2.aspx先进行用户注册&#xff0c;登录后进入首页点击Submit New Manuscript开始提交手稿&#xff0c;其他期刊流程相同&#xff0c;CAG所有的投稿注意事项见&#xff1a;Guide for authors - Comp…

数据库连接与properties文件

管理properties数据库&#xff1a; 现在pom文件中加入Druid的坐标&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency>配置文件中添加相应的数据&…

拒绝B站邀约,从月薪3k到年薪47W,我的经验值得每一个测试人借鉴

有时候&#xff0c;大佬们总是会特立独行。因为像我这样的常人总是想不通&#xff0c;究竟是怎样的情境&#xff0c;连B站这样的大厂面试都可以推掉&#xff1f; 缘起一通电话&#xff0c;踏出了改变人生轨迹的第一步 我是小瑾&#xff0c;今年28岁&#xff0c;2016年毕业于陕…

线程池的基本认识与使用

线程池的基本认识与使用线程池线程池工作原理&#xff1a;优点&#xff1a;传统的创建线程方式线程池创建线程使用线程池 池化思想&#xff1a;线程池、字符串常量池、数据库连接池可以提高资源的利用率 线程池工作原理&#xff1a; 预先创建多个线程对象 放入线程池种&#…

数据库基础-数据库基本概念(1-1)

你好&#xff0c;欢迎来到数据库基础系列专栏&#xff0c;欢迎留言互动哦~ 目录一、数据库基础1. 数据库基本概念1.1 数据库1.2 什么是数据库管理软件1.3 表1.4 行1.5 列和数据类型1.6 主键1.7 什么是 SQL一、数据库基础 1. 数据库基本概念 1.1 数据库 数据库是一个以某种有…

射频调试的习惯

三月开工了&#xff0c;一个月的调试即将开始。其实调试的重心是测试&#xff0c;核心的推动力是做事的习惯和思维。测试很重要&#xff0c;数据不对&#xff0c;能力和时间都浪费了上面了。测试的问题初步解完了&#xff0c;今天吃饭的时候碰到大领导。领导好忙&#xff0c;我…

SQL报错注入(上)

SQL报错注入报错注入概述报错注入的前提条件Xpath型函数&#xff08;需要数据库版本>5.15&#xff09;extractvalue&#xff08;&#xff09;extractvalue&#xff08;&#xff09;实操![在这里插入图片描述](https://img-blog.csdnimg.cn/5c7bfbc6565045d4bb352448c17f0869…

docker搭建redis集群、哨兵

集群搭建 本机IP 192.168.1.149 分别采用映射 192.168.1.149 的6379 6380 6381 三个端口模拟三台服务器。搭建三主无从的集群 首先可以在本机上创建三份redis.conf配置文件,分别命名为redis1.conf, redis2.conf, redis3.conf &#xff0c;我这里放在/opt/redis/conf/中 redis*.…

MyBatis学习笔记(九) —— 自定义映射resultMap

9、自定义映射resultMap 9.1、resultMap处理字段和属性的映射关系 若字段名和实体类中的属性名不一致&#xff0c;则可以通过resultMap设置自定义映射 resultType 是一个具体的类型。 resultMap 是resultMap的标签。 id 是处理主键和属性的映射关系&#xff1b; result 是处…

FirePower X2 14.0.1 for RAD Studio Alexandria

介绍 FirePower X2 FirePower X2 集成了 RAD Studio 11.0 Alexandria 中的新功能&#xff0c;并预览了我们的新特色组件 TwwDataGrouper。 FirePower X2 还允许您为 Apple 的新 M1 芯片构建应用程序&#xff0c;这样您就可以进一步利用 M1 芯片来提高本机应用程序的性能&#x…

set和map的基本使用

目录 关联式容器 要点分析 键值对 pair介绍 set 模板参数列表&#xff1a; set的构造&#xff1a; 常用接口 操作 multiset map map的构造 插入 make_pair map的迭代器 operator[] multimap multimap中为什么没有重载operator[] 关联式容器 关联式容器也是用…

(五十六)针对主键之外的字段建立的二级索引,又是如何运作的?

上一次我们已经给大家彻底讲透了聚簇索引这个东西&#xff0c;其实聚簇索引就是innodb存储引擎默认给我们创建的一套基于主键的索引结构&#xff0c;而且我们表里的数据就是直接放在聚簇索引里的&#xff0c;作为叶子节点的数据页&#xff0c;如下图。 而且我们现在也对基于主键…

日志框架以及如何使用LogBack记录程序

使用日志框架可以记录一个程序运行的过程和详情&#xff0c;同时便捷地存储到文件里面&#xff0c;并且性能和灵活性都比较好。日志的体系结构包括两类日志规范接口&#xff1a;Commons Logging&#xff0c;简称&#xff1a;JCL&#xff1b;Simple Logging Facade for Java&…

JavaScript高级程序设计读书分享之8章——8.2创建对象

JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 创建Object的实例 let person new Object(); person.name "Nicholas"; person.age 29; person.job "Software Engineer"; person.sayName function() { console.log(this…

增长乏力?创造产品和项目需求的6大方法【一杯咖啡谈项目】

我这里所说的创造需求&#xff0c;类似于PMI在《需求管理实践指南》中所写的专业术语“需要评估”&#xff08;needs assessment&#xff09;&#xff0c;这个需要评估&#xff0c;没有写进PMI的《项目管理知识体系指南&#xff08;PMBOK指南&#xff09;》&#xff08;以下称为…

fork()出来一个进程,这个进程的父进程是从哪来的?

基本概念fork() creates a new process by duplicating the calling process. The new process is referred to as the child process. The calling process is referred to as the parent process.fork()是一个系统调用&#xff0c;不是一个函数。详细信息可以&#xff0c;man…

day(22) Echarts和nacos

day(22) Echarts和nacos一、Echarts和nacos1.1 数据展示1.2 查询日期之间的数据二、配置中心2.1 配置中心spring cloud config2.1.1 缺点2.1.2 其他配置中心2.2 nacos2.2.1 pom2.2.2 配置文件2.2.3 Data id是微服务名称2.2.4 优先级2.2.5 动态刷新2.2.6 namespace2.2.7 多配置文…

Symbiosis Nest 共生巢token跨链兑换协议

参考文献&#xff1a; Getting Started with Symbiosis - Symbiosis Documentation Relayers Network | Symbiosis - Symbiosis Documentation Symbiosis V1 vs. V2 - Symbiosis Documentation Symbiosis protocal 基于稳定币的跨链兑换协议. Symbiosis protocol 组成结构…

pyechart绘制多图(三图及以上)的overlap叠加

pyechart github页面&#xff1a;https://github.com/pyecharts/pyecharts 首先要明确多图叠加到一个图的规则&#xff0c;即多个图只能有一个公共的轴&#xff1a; 比如&#xff0c;横坐标含义相同&#xff08;如时间维度&#xff09;或者&#xff0c;纵坐标取值含义相同 文…

Web3中文|把Web3装进口袋,Solana手机Saga有何魔力?

2月23日&#xff0c;Solana Web3手机Saga发布新的消息&#xff0c;将推出NFT铸造应用程序Minty Fresh。在Minty Fresh&#xff0c;用户仅需轻点并完成拍摄&#xff0c;就可以直接在手机中进行NFT铸造&#xff0c;并在几秒钟内将其转换为链上NFT&#xff0c;NFT还可以发布在 Ins…