文档章节

将自己的 jar 包发布到 maven 中央仓库

田心双木
 田心双木
发布于 01/10 18:07
字数 1634
阅读 259
收藏 13
点赞 0
评论 1

注册

首先到sonatype官网进行注册!

找到注册“sign up”,如图,进行注册!

登录

登录后,在页面上方点击“create”进行创建 issue。

获得如下图所示。

  • Summary:写你想做什么,你的包的功能。简单概述,要短一点。
  • Description:可以直接复制 summary,然后加一点描述信息。
  • Group Id :推荐写 github。例如我的是 io.github.dslzc ,很快能通过,自己域名的话我没试过,虽然我有自己的域名。
  • Project UR : 你的项目的描述,填写你的项目的 github 地址就可以了。
  • SCM url: 有填写说明的,如https://github.com/DSLZC/dslcode-common-utils.git。
  • Username(s):邀请其他人有权限一起完成这个项目。我当时没填。

等待 Issue 审批通过

网上说需要一天到两天。为何我这一步是秒过的。大概 20 秒过后我就接收到通过邮件了。或许是我填写的 github 比较好认真真实性。

配置 GPG

如果是 Windows 操作系统,需要下载 Gpg4win 软件来生成密钥对。建议大家下载 Gpg4win-Vanilla 版本,因为它仅包括 GnuPG,这个工具才是我们所需要的。

安装 GPG 软件后,打开命令行窗口,依次做以下操作:

  1. 查看是否安装成功

gpg --version

能够显示 GPG 的版本信息,说明安装成功了。

  1. 生成密钥对

gpg --gen-key

此时需要输入姓名、邮箱等字段,其它字段可使用默认值,此外,还需要输入一个 Passphase,相当于一个密钥库的密码,一定不要忘了,也不要告诉别人,最好记下来,因为后面会用到。

  1. 查看公钥

gpg --list-keys

如下:

D:\IdeaProjects\ScriptSpider>gpg --list-keys
pub   rsa2048 2018-01-10 [SC] [expires: 2020-01-10]
      E7135ADD7985270EC66E0B2F735A5D90291062B9
uid           [ultimate] dongsilin <dslzc@foxmail.com>
sub   rsa2048 2018-01-10 [E] [expires: 2020-01-10]

我的公钥是:E7135ADD7985270EC66E0B2F735A5D90291062B9

  1. 将公钥发布到 PGP 密钥服务器

gpg --keyserver hkp://pool.sks-keyservers.net:11371 --send-keys E7135ADD7985270EC66E0B2F735A5D90291062B9

此后,可使用本地的私钥来对上传构件进行数字签名,而下载该构件的用户可通过上传的公钥来验证签名,也就是说,大家可以验证这个构件是否由本人上传的,因为有可能该构件被坏人给篡改了。

  1. 查询公钥是否发布成功

gpg --keyserver hkp://pool.sks-keyservers.net:11371 --recv-keys E7135ADD7985270EC66E0B2F735A5D90291062B9

实际上就是从 key server 上通过公钥 ID 来接收公钥,此外,也可以到 sks-keyservers.net 上通过公钥 ID 去查询。

修改 Maven 配置文件

...     
 <servers>     
     <server>         
     <id>dslcode</id>  // 这里要和后面呼应        
     <username>dslcode</username>    // 登录sonatype的用户名         
     <password>**********************</password>   // 登录sonatype的密码   
     </server>   
 </servers>     
 ...

修改你工程的 pom 文件

你可以增加你自己其他的,这个是我当时的 pom。

   <groupId>io.github.dslzc</groupId>
   <artifactId>dslcode.common.utils</artifactId>
   <version>0.0.1</version>
   <packaging>jar</packaging>

   <name>Java-Common-Utils</name>
   <description>我的常用工具包 Java Common Utils</description>
   <url>https://github.com/DSLZC/dslcode-common-utils</url>

   <licenses>
      <license>
         <name>The MIT License (MIT)</name>
         <url>http://www.opensource.org/licenses/mit-license.html</url>
         <distribution>repo</distribution>
      </license>
   </licenses>

   <developers>
      <developer>
         <name>****</name>
         <email>****@foxmail.com</email>
      </developer>
   </developers>

   <scm>
      <connection>scm:git:https://github.com/DSLZC/dslcode-common-utils.git</connection>
      <developerConnection>scm:git:https://github.com/DSLZC/dslcode-common-utils.git</developerConnection>
      <url>https://github.com/DSLZC/dslcode-common-utils</url>
   </scm>

   <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      <java.version>1.8</java.version>

      <spring.version>4.3.3.RELEASE</spring.version>
      <aspectj.version>1.8.9</aspectj.version>
      <servlet.version>3.1.0</servlet.version>
      <javax.validation.version>1.1.0.Final</javax.validation.version>
      <fasterxml.version>2.8.1</fasterxml.version>
      <commons.io.version>2.4</commons.io.version>
      <dom4j.version>1.6.1</dom4j.version>
      <dozer.version>5.5.1</dozer.version>
      <lombok.version>1.16.10</lombok.version>
      <joda.time.version>2.9.4</joda.time.version>
      <apache.poi.version>3.14</apache.poi.version>
      <thumbnailator.version>0.4.8</thumbnailator.version>
   </properties>

   <dependencies>
      ************
   </dependencies>

   <build>
      <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <addMavenDescriptor>true</addMavenDescriptor>
                        <index>true</index>
                        <manifest>
                            <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <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>2.10.1</version>
                <executions>
                    <execution>
                        <id>attach-javadoc</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                  <configuration>
                     <additionalparam>-Xdoclint:none</additionalparam>
                  </configuration>
               </execution>
                </executions>
                <configuration>
                    <show>public</show>
                    <charset>UTF-8</charset>
                    <encoding>UTF-8</encoding>
                    <docencoding>UTF-8</docencoding>
                    <failOnError>false</failOnError>
                    <!--<excludePackageNames>com.dslcode.*</excludePackageNames>-->
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-gpg-plugin</artifactId>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
      </plugins>
   </build>

    <distributionManagement>
        <snapshotRepository>
            <id>dslcode</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>dslcode</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

</project>

上传构件到 OSS 中

mvn clean deploy -Dmaven.test.skip=true -Dgpg.passphrase=************ 

有时候会弹出来让你输入Passphase 密码,Passphase 就是 GPG 密钥对的密码,只有自己才知道。在之前的步骤中已经告诉你要牢记了。

随后会看到大量的 upload 信息,而且速度比较慢,如果出现 timeout,需要反复尝试。

在 OSS 中发布构件

打开https://oss.sonatype.org,使用自己的 Sonatype 账号登录后,点击左侧的 Staging Repositories ,在最下方可以看到刚才已上传的构件,或者搜索自己的构件。

这些构件目前是放在 Staging 仓库中,可进行模糊查询,快速定位到自己的构件。

此时,该构件的状态为 Open,需要勾选它,然后点击 Close 按钮。

接下来系统会自动验证该构件是否满足指定要求,当验证完毕后,状态会变为 Closed。

如果检查出现问题,会有详细的记录,需要把改构件Drop,解决问题后再重新deploy。

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

通知 Sonatype“构件已成功发布”

需要在曾经创建的 Issue 下面回复一条“构件已成功发布”(Hi,my component has been successfully published.thanks!)的评论,这是为了通知 Sonatype 的工作人员为需要发布的构件做审批,发布后工作人员会关闭该 Issue。

我的 issue 展示

通过该截图,你应该知道我们都做了什么。

如果是发布的话,请注意 artifactId 不能是 -SNAPSHOT

因为从截图看(经过证明),一旦你的 issue 第一次被批准,你就可以发布-SNAPSHOT了,而且我当时尝试了使用我的-SNAPSHOT版本的 jar,并不需要进行后续操作。

等待构件审批通过

没错,还是要等,我大概等了一个多小时吧。看我的邮件列表的回复。意思大概是 10 分钟就可以使用了,2 小时才能被搜索到。我猜用镜像的应该更慢,需要同步的。感觉他们的效率还是很高,没有我查到的别人用一到两天。

最后,就可以到中央仓库中搜索到自己发布的构件了!中央仓库搜索网站:http://search.maven.org/

第一次之后

你就可以安心的开车了 ~

以后的发布流程是:

  1. 构件准备好之后,在命令行上传构建

  2. 在 https://oss.sonatype.org/ “close”并“release”构件

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

 

OK,准备下车啦!!!!!!!

© 著作权归作者所有

共有 人打赏支持
田心双木
粉丝 7
博文 88
码字总数 50863
作品 0
成都
高级程序员
加载中

评论(1)

_Mr_Right_
_Mr_Right_
手动:赞
如何在电脑上搭建一个私服,实现maven项目的上传和下载?

  在本机上搭建私服 1、去官网下载nexus   下载网址: http://nexus.sonatype.org/ 下载格式:下载war格式 (还有bundle格式 ) : nexus-2.7.0-06.war (直接放入tomat的wabapps中运行)...

科技小能手
2017/11/19
0
0
maven仓库--私服(Nexus的配置使用)

maven--私服的搭建(Nexus的使用)和注意的问题 私服是什么 私服,私有服务器,是公司内部Maven项目经常需要的东东,不总结一下,不足以体现出重视。Nexus是常用的私用Maven服务器,一般是公...

wx58bcafcc6d2c9
2017/05/25
0
0
maven私服注意问题-nexus搭建maven私服及私服jar包上传和下载

http://blog.csdn.net/zwc0910/article/details/17349111 一、nexus搭建maven私服及相关介绍 1、下载nexus-2.12.0-01-bundle.zip(版本随意) 2、以管理员身份运行cmd,cd进入解压文件的bin目...

你否
2017/10/30
0
0
1.maven 入门,安装,配置

1.理解: Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project's build, reportin......

Daim
2016/03/22
14
0
Maven私服 Nexus的搭建

背景: 私服:私有服务器,是公司内部Maven项目经常用到的私有仓库。Nexus就是一款常用的私用Maven服务器,一般是公司内部使用。 下载地址是:http://www.sonatype.org/nexus/go 默认本地地址...

huoyoung
2016/09/11
94
0
Maven仓库介绍

何为仓库 Maven中的仓库用来存放生成的构建和各种依赖。严格说来只有两种仓库:本地和远程。本地仓库指本机的一份拷贝,用来缓存远程下载、包含你尚未发布的临时构件。 远程仓库指通过各种协...

郏高阳
2016/05/25
96
0
Linux下使用nexus搭建maven仓库私服

有个maven私服可以很方便地管理我们的jar包和发布构建到远程仓库,本文就介绍了如何在linux下一步步使用nexus搭建maven私服 原文链接: http://www.tuicool.com/articles/E7ZBv2 下载安装 最...

宁宁爸
2015/09/17
627
0
maven的使用笔记

1. 安装 下载zip包解压,将bin目录配置至PATH(最好是配置HOME然后引用) 修改conf下53行的setting标签,指定本地仓库的路径 在eclipse或Myeclipse中add,并采用自己的setting文件 1.1 Mave...

mmythos
2017/01/06
0
0
Maven私服Nexus3.x环境构建操作记录

Maven私服Nexus3.x环境构建操作记录 Maven介绍 Apache Maven是一个创新的软件项目管理和综合工具。 Maven提供了一个基于项目对象模型(POM)文件的新概念来管理项目的构建,可以从一个中心资...

sietai
05/16
0
0
Maven依赖本地jar包,上传第三方jar包

前言:maven管理项目,经常用到中央仓库没有的第三方jar包,需要将本地的jar包发布到私有库供项目使用。 打包到本地仓库 直接依赖本地的jar包 <dependency><groupId>org.alipay</groupId><ar...

王念博客
2016/05/05
924
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

eclipse SVN 项目重新定位

SVN 重新定位 1.方法一 首先:在Eclipse中选择Windows-> Show View->others 就会出现【SVN资源库/SVN Repositories】,选中后,点击确认; 然后:选中原有的地址,选择【重新定位/Relocate】...

qimh
7分钟前
0
0
Linux 第29课 ——Linux集群架构(下)

Linux集群架构(下) 八、DR模式搭建 8.1 准备工作 试验需求三台机器: 分发器,也叫调度器(简写为dir) 192.168.112.136 ying01 rs1 192.168.112.138 ying02 rs2 192.168.112.139 ying03 vip...

feng-01
12分钟前
0
0
轻松搭建svn版本管理工具+svnmanager管理客户端

前面的文章有写过svn版本管理工具的安装是基于svn的安装包进行安装,对于svn与apache的结合还得下svn和apache的模块进行结合过程比较繁琐,今天来介绍下通过centos的yum来安装svn能够快速安装...

javazyw
21分钟前
0
0
keepalived配置高可用集群

Linux集群概述 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:...

TaoXu
26分钟前
0
0
mysql联表批处理操作

1 概述 mysql中的单表增删改查操作,可以说是基本中的基本. 实际工作中,常常会遇到一些基本用法难以处理的数据操作,譬如遇到主从表甚至多级关联表的情况(如一些历史问题数据的批量处理),考虑到...

社哥
29分钟前
0
0
IntelliJ IDEA 详细图解最常用的配置,适合刚刚用的新人。

刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改...

kim_o
44分钟前
0
0
Google Java编程风格指南

目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合...

niithub
46分钟前
0
0
java.net.MalformedURLException异常说明

1.异常片段 Java代码中,在进行URL url = new URL(urllink)操作时,提示以下异常信息,该类异常主要问题出在参数urllink上面。 异常片段1 java.net.MalformedURLException at java.ne...

lqlm
46分钟前
1
0
CentOS7修改mysql5.6字符集

解决办法:CentOS7下修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家所需要的字符集,是国际编码。 具体操作如下: 1.进入MySQL [root@tianqi-01 ~]# mysql -uroot -p Enter passw...

河图再现
48分钟前
0
0
DevExpress v18.1新版亮点——WPF篇(一)

用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载>> Accordion Co...

Miss_Hello_World
51分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部