IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 发布项目到Maven中央库 -> 正文阅读

[Java知识库]发布项目到Maven中央库

最近想使用maven发布个jar包,一开始想发布到maven中央库,后来发现很麻烦,国内阿里有个“云效仓库”,没有考察清楚就部署了,后来发现云效仓库只能是私有仓库,要配置专门的连接信息,用户名密码,想下载jar包还得让同组人员申请账号,配置访问权限,然后才能用这个私有库,这就很麻烦。组内合作还是希望尽量无感知使用各项资源。

所以又回去发布jar包到maven中央库,下面是步骤,备忘

1、sonatype注册

https://issues.sonatype.org
到这里创建sonatype账号,然后创建一个issue,我这个是编辑界面,已经创建完了,按照这个来填。或者参考:上传jar包到maven公共远程中央仓库,这个写的很细了
在这里插入图片描述
GroupID:如果是公网的域名,例如com,org等域名相关,需要验证域名
我没有,所以用户GitHub的项目
之后的信息必须有github的开源项目,才能填写,所以先到第二步,创建你的开源项目。

2、Github上创建一个开源项目

名字和你要放到Maven库里的jar包名字最好相关。我开源项目其实不是上传的jar包的源代码,只是挂个名字。

3、回到https://issues.sonatype.org,补全github信息

然后会让你等待审批,如果GroupID你有对应的域名,比如你GroupID: org.XXX,那你要在http://www.XXX.org域名里进行设置,证明这个域名是你的。
在这里插入图片描述
我没有域名,所以用的github的项目名,io.github.YYY,YYY是我的项目名,看图片提示,要求你在github建一个临时的开源项目,名字是分配给你新建的Issue的号,例如OSSRH-80995,建好以后,把你的Issue设置为“重打开”状态,如果不知道,修改一下你的issue,提交就好了,注意下状态,是不是变为“打开”,这事等几分钟,会有人验证你的新项目OSSRH-80995,证明这是你的账号,然后就给你通过了。

状态为RESOLVED,comments中会发送Congratulations!Welcome to the Central Repository!

你的公共仓库通道打好了。
更改maven的settings.xml以及你的项目的pom.xml,准备上传jar。

4、修改本地Maven的settings.xml

找到你的maven仓库的settings.xml
建议你自己maven,然后绑定到idea,不要用idea自带的maven,后面会有麻烦
另外注意setting.xml位置,users/你的账号/.m2/settings.xml优先级是高于你maven的根目录下conf里的settings.xml文件的。如果有俩,弄清楚哪个生效了。
在本地仓库级别的配置文件中settings.xml添加上面申请的用户名和密码。

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

此处的ossrh,是个名字,在pom.xml文件中会用到,这个名字可以改,但是注意两边一致。

5、修改项目的pom.xml

  • 配置上传仓库,注意这里的ossrh就是对应上面settings.xml里的ossrh
    两个仓库,一个发布仓库repository,一个临时仓库snapshotRepository
<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>
  • 配置插件
          <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>3.0.0</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <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>        
            <!--配置生成Javadoc包-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.10.4</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <aggregate>true</aggregate>
                    <charset>UTF-8</charset>
                    <docencoding>UTF-8</docencoding>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <additionalparam>-Xdoclint:none</additionalparam>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

注意这里的maven-gpg-plugin,因为还要做GPG的验证,下一步配置

6、GPG签名文件生成

Sonatype要求所有部署的文件都需要使用GPG / PGP.asc签名,并且每个文件都必须包含一个包含签名的文件,所以我们需要生成密钥对

参考开源的一小步----开源类库传至Maven中央仓库,这里写的很详细

这里我们用到Gpg4win来生成密钥

Gpg4win下载地址:https://www.gpg4win.org/download.html

在这里插入图片描述
下载后安装,然后创建秘钥
在这里插入图片描述
在这里插入图片描述
我一开始没填,后来发现好像不行,老实点填了吧,还要求你填写个密码,请一定记住,因为发布jar包的时候需要用到
在这里插入图片描述
这就创建好了,然后需要把密钥上传到服务器。公共的秘钥服务器

  • 查询公钥
    gpg --list-key 查询一下公钥
    在这里插入图片描述
    公钥就是上面红框里的 192C31BD58C54。。。。。。

  • 发布公钥

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 公钥

注意:网上经常有用hkp://pool.sks-keyservers.net 作为公钥服务器的,这个服务器,我怎么都发布不成功,后来发现2021年下半年这个网站不提供服务了,所以只要hkp://keyserver.ubuntu.com:11371成功了就行了,别纠结

  • 查询是否成功

gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 公钥

在这里插入图片描述
看到这个就是成功了
又近了一步,加油!!!!

7、打包

上你的项目,如果是idea的话,直接点击deploy,弹出对话框,让你输入GPG密码,输入提交,如果顺利,就会报提交成功了,不顺利,就得差错,一步步往回找。发布成功后,到这里可以看到你的发布的jar

登录 https://s01.oss.sonatype.org/#stagingRepositories
选择要发布的jar,在图示这里,这里只是暂存仓库,还需要两步,第一步,选择你的jar,点击close按钮,等着,如果过1分钟回来,看到Release按钮还是灰色的,看看下面的activity里找错!
在这里插入图片描述
就在jar的下方会显示你close产生的信息,如图所示,这里打红叉的就是出错的地方,下图没有红叉
在这里插入图片描述
按照红叉错误,百度修

反复几次,修正好了,“Release”按钮可以用了,点击他,就发布到maven2仓库里
此时你就能在https://repo1.maven.org/maven2/中找到你的依赖

也就是下面这个仓库里

<mirror>  
       <id>central-repos1</id>  
       <name>Central Repository 2</name>  
       <url>http://repo1.maven.org/maven2/</url>  
</mirror>

我是在这里界面查找
在这里插入图片描述
搜到了

但是在公共仓库 https://mvnrepository.com/里没搜到,据说要几天以后才有。然后等了2天,应该是1天多,这里就可以看到我的包了,:)开心
在这里插入图片描述

8、下载

换了台机器,下载刚Release的包

  • 用命令mvn dependency:get下载
  • 或者用idea,放在项目里用maven下载
    具体怎么做的,见我另一篇博文,《从maven中央仓库下载jar包》
<dependency>
  <groupId>io.github.XXX</groupId>
  <artifactId>XXXX-mybatis-dynamic</artifactId>
  <version>1.0</version>
</dependency>

9、删除已经发布的jar

各种理由,当你想删除已经发布的资源,想再发布同样版本的资源时,会发现

**这个是不允许的**!!!

一旦发布,不能撤销不能删除,只能升级版本。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-24 17:59:01  更:2022-05-24 18:01:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:43:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码