首页 > 其他分享 >如何把jar发布到中央仓库

如何把jar发布到中央仓库

时间:2023-06-04 12:31:40浏览次数:37  
标签:xml 仓库 中央 jar -- sonatype https 构件 org


1、在网站https://issues.sonatype.org/secure/Dashboard.jspa注册一个账号(请记住对应的账号和密码,之后需要用到)

此外,Sonatype 还提供了一个名为OSS 的系统,具体的构件发布是在这个oss系统上,

Sonatype OSS 地址:https://oss.sonatype.org

这里的用户名和密码就是上面在JIRA中注册的,在这里可以查询到全世界已发布的构件,当然我们发布构件的操作也在这里进行。

2、登录后选择后选择Create

如何把jar发布到中央仓库_sonar

如何把jar发布到中央仓库_maven_02

Project:项目默认值

IssueType:默认值

Summary:说明,请介绍一下项目

GroupId:项目的分组名称

ProjectURL:访问项目的URL,写仓库地址

SCMurl:访问项目的URL,写仓库地址

其他的选填

填写完毕后点击Create,然后等待状态变成RESOLVED,如下图

如何把jar发布到中央仓库_java_03

Comments的回复如下:

如何把jar发布到中央仓库_maven_04

3、使用GPG 生成密钥对

Windows系统直接去https://www.gpg4win.org/download.html下载Gpg4win,安装好后通过gpg --version,出现版本等信息就安装成功了。如果是Linux,可以通过yum install gpg安装)

如何把jar发布到中央仓库_sonatype_05

生成密钥对,在cmd窗口中输入命令:

gpg --gen-key

提示输入:

Real name

Email address

根据提示输入大写O确认无误

然后弹出一个输入密码的对话框,请务必记住该密码

如何把jar发布到中央仓库_sonatype_06

输入密码确认

查看公钥    gpg --list-keys

如何把jar发布到中央仓库_sonar_07

将公钥发布到 PGP 密钥服务器(gpg --list-keys可以看到公钥id)

gpg--keyserver hkp://pool.sks-keyservers.net --send-keys 5292CC898762C9D1237A561608DE5FBA6F7142E6

gpg--keyserver hkp://keyserver.ubuntu.com:11371 --send-keys5292CC898762C9D1237A561608DE5FBA6F7142E6

如何把jar发布到中央仓库_sonar_08

查询公钥是否发布成功

gpg --keyserverhkp://pool.sks-keyservers.net --recv-keys 5292CC898762C9D1237A561608DE5FBA6F7142E6

如何把jar发布到中央仓库_sonar_09

4、修改Maven配置文件,需要同时修改全局的setting.xml和项目的pom.xml文件

setting.xml修改:

找到maven的全局配置文件settings.xml,在里面找到 节点,这个节点默认是注释掉的,增加如下配置:

<servers>
<server>
<id> sonatype </id>
<username>用户名</username>
<password>密码</password>
</server>
</servers>

这里的id是要在pom.xml里面使用的,用户名和密码就是在Sonatype上面注册的用户名和密码。

 

pom.xml修改:


<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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gitee.hjj520</groupId>
<artifactId>payment-core</artifactId>
<version>0.0.1-RELEASE</version>
<name>payment-core</name>
<description>a project aboutpayment</description>
<url>https://gitee.com/hjj520/payment-core</url>
<licenses>
<license>
<name>The ApacheSoftware License, Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<developer>
<name>happyhuangjinjin</name>
<email>[email protected]</email>
</developer>
</developers>
<scm>
<tag>master</tag>
<connection>https://gitee.com/hjj520/payment-core.git</connection>
<developerConnection>https://gitee.com/hjj520/</developerConnection>
<url>https://gitee.com/hjj520/payment-core.git</url>
</scm>
 
<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>
<distributionManagement>
<snapshotRepository>
<id>sonatype</id>
<url>
                     https://oss.sonatype.org/content/repositories/snapshots/
</url>
</snapshotRepository>
<repository>
<id>sonatype</id>
<url>
                     https://oss.sonatype.org/service/local/staging/deploy/maven2/
</url>
</repository>
</distributionManagement>
</profile>
</profiles>
</project>


pom.xml中必须包括:name、description、url、licenses、developers、scm等基本信息,使用了 Maven 的 profile 功能,只有在 release 的时候,创建源码包、文档包、使用 GPG 进行数字签名。此外,snapshotRepository 与 repository 中的 id 一定要与 setting.xml 中 server 的 id 保持一致。如果是多模块项目的话,只需要在父pom.xml中声明这些,子pom.xml中只需要修改相应的一些信息,如name标签。

 

5、上传构件到 OSS 中

自己配置profiles时使用:

mvn clean deploy -Prelease

使用官网parent时使用:

mvn clean deploy -P sonatype-oss-release-Darguments="gpg.passphrase=密钥密码"

当执行以上 Maven 命令时,会自动弹出一个对话框,需要输入上面提到的 Passphase,它就是刚才设置的 GPG 密钥库的密码。随后会看到大量的 upload 信息,因为在国内网络的缘故,时间有点久,耐心等待吧。

注意:此时上传的构件并未正式发布到中央仓库中,只是部署到 OSS 中了,下面才是真正的发布。

6、在OSS 系统中发布构件

https://oss.sonatype.org系统中,使用自己的 Sonatype 账号登录后,可在 Staging Repositories 中查看刚才已上传的构件,这些构件目前是放在Staging 仓库中,可进行模糊查询,快速定位到自己的构件。此时,该构件的状态为 Open,需要勾选它,然后点击 Close 按钮。系统会自动验证该构件是否满足指定要求,当验证完毕后,状态会变为Closed。

 

如何把jar发布到中央仓库_sonar_10

发现release版本才会出现在Staging Repositories里,snapshot版本不会出现在这里

如何把jar发布到中央仓库_xml_11

最后,点击 Release 按钮来发布该构件

如何把jar发布到中央仓库_java_12

Staging Profiles可以看到正在release

如何把jar发布到中央仓库_java_13

7、通知 Sonatype 构件已成功发布

这个前面的Sonatype工作人员其实在审核你的Issue时,在comment中已经提示你了,在Issue下面回复一条“构件已成功发布”的评论,这是为了通知 Sonatype 的工作人员为需要发布的构件做审批,发布后会关闭该Issue。

 

等待构件审批通过

这个又只能等待了,当然他们晚上上班,还是第二天看。当审批通过后,将会收到邮件通知。

 

从中央仓库中搜索构件

这时,就可以在maven的中央仓库中搜索到自己发布的构件了,以后可以直接在pom.xml中使用了!

中央仓库搜索网站:http://search.maven.org/

第一次成功发布之后,以后就不用这么麻烦了,可以直接使用Group Id发布任何的构件,当然前提是Group Id没有变。

 

以后的发布流程:

a)构件完成后直接使用maven在命令行上传构建;

b)在https://oss.sonatype.org/close并release构件;

c)等待同步好(大约2小时多)之后,就可以使用了

 

如何把jar发布到中央仓库_xml_14

更多技术文章分享请关注公众号

如何把jar发布到中央仓库_sonar_15

 



标签:xml,仓库,中央,jar,--,sonatype,https,构件,org
From: https://blog.51cto.com/u_13538361/6410386

相关文章

  • git仓库支持submodule
    概述git仓库引用其他仓库,类似软连接//usedgitsubmoduleaddgit://github.com/[USERNAME]/[REPO_NAME].gitTARGET_FOLDER在主仓库创建为TARGET_FOLDER的文件夹这会克隆一个外部仓库:git://github.com/[USERNAME]/[REPO_NAME].git到TARGET_FOLDER,类似gitclone这同时......
  • 数据仓库之商品订单数仓开发
    ods层在ods_mall中需要创建以下针对商品订单数据的表表名说明导入方式ods_user用户信息表全量ods_user_extend用户扩展表全量ods_user_addr用户收货地址表全量ods_goods_info......
  • 数据仓库之订单拉链表实战
    什么是拉链表针对订单表、订单商品表,流水表,这些表中的数据是比较多的,如果使用全量的方式,会造成大量的数据冗余,浪费磁盘空间。所以这种表,一般使用增量的方式,每日采集新增的数据。在这注意一点:针对订单表,如果单纯的按照订单产生时间增量采集数据,是有问题的,因为用户可能今天下单,明......
  • git一些小经验(1)----新建git仓库
    创建远程仓库此处假设你已经安装了git,并且配置了远程git仓库的ssh密钥.我是用https://gitee.com/作为远程仓库的,登录之后,在主页右上角,点击加号按钮,就可以创建一个新仓库,如下图所示:创建仓库时,如果预先选择了一些模板,则仓库中就会有一些初始文件.创建本地仓库......
  • 数据仓库项目介绍与分析
    项目效果展示本身我们这个数据仓库项目其实是一个纯后台项目,不过为了让大家能够更加直观的感受项目的效果,我们可以基于数据仓库中的数据统计一些指标进行展现。我们这个项目要讲的重点不是这个大屏,这个大屏只是一个效果,为了让大家感受更加直观一些而已,我们主要讲的是这些指标对......
  • 操作MS Execl电子表格的常用JAR包
    在做报表开发时,免不了要导出数据。除了简单的循环列表数据导出外,还有基于模板的数据导出。比如生成运营周报或者月报之类的,甚是符合使用模板导出方式。今天总结一些常用的Execl导出JAR包。0x01:jxl支持Excel95-2000的所有版本;生成Excel2000标准格式;支持字体、数字、日期操作;能够修......
  • linux运行jar包、查看jar包进程、停止jar包
    后台运行:nohupjava-jarruoyi-admin.jar>msg.log2>&1&停止:ps-ef|grepXXX.jarkillXXXXXX 1、后台运行jar包程序,输入:nohupjava-jar/路径/程序.jar&2、后台终止jar包程序,输入:ps-ef|grepjava,查看使用java命令的进程,再输入:killpid 即可终止运行------------......
  • Git—远程仓库操作
    一、代码托管平台1.1Github......
  • springboot打包jar文件运行后无法读取jar目录中的Excel模板文件
    原因:SpringBoot内嵌web容器,其特点是只有一个jar文件,在容器启动后不会解压缩。解决方式:1.必须使用相对路径读取文件;假设你的模板文件放在了resources—>templates—>xlsx—>test.xlsx2.只能使用流去读取,不能用file;//jar里面文件读取方式: ClassPathResourceclassPathRes......
  • spring boot 项目打包到maven仓库供其它模块使用
     在对springboot项目进行打包发布的时候发现其它springboot项目服务真正引用使用该springboot包中的类 需对打包插件做如下修改:<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</arti......