组件发布到Maven中央仓库过程🌎
概述
java doc
和代码源文件
步骤
准备pom
坐标(GAV)
- groupId:以反向域名开头的项目的顶级名称空间级别
- artifactId:组件的唯一名称
- version:组件的版本字符串,版本可以是任意字符串,但不能以结尾-SNAPSHOT,因为这是用于标识当前正在开发的版本的保留字符串。强烈建议使用[语义版本控制]( http://semver.org)帮助您的用户选择版本。
-
connection
详细说明只读连接。 -
developerConnection
详细说明读取和写入访问连接详细信息。 -
url
包含了一个Web
前端,您的SCM
系统的URL
。
1 |
<groupId>cn.smallbun.scaffold</groupId> |
项目名称,描述和URL
有关项目的一些人可读的信息和指向你的项目的网站获取更多,我们需要的存在name,description和url 。
1 |
<name>smallbun-scaffold-framework</name> |
一种常见且可接受的名称惯例是使用Maven属性从坐标中将其组装起来:
1 |
<name>${project.groupId}:${project.artifactId}</name> |
许可证信息
1 |
<!--Apache--> |
开发者信息
1 |
<!--开发人员信息--> |
SCM 信息
与源代码管理系统的连接是一个必需的元素。使用的语法取决于使用的版本控制系统。
Maven SCM文档
中提供了有关各种
受支持格式
的详细信息,并提供了许多常见示例。
subversion
1 |
<scm> |
github
1 |
<scm> |
BitBucket
1 |
<scm> |
BitBucket上的Mercurial
1 |
<scm> |
Apache Maven的Apache Git服务器上的Git
1 |
<scm> |
完整的pom信息
1 |
|
Java doc和源代码
要生成Javadoc和Source jar文件,您必须配置javadoc和Source Maven插件。
1 |
<build> |
GPG签名
为了提高中央存储库的质量,maven中央仓库要求工件(除校验和之外的所有文件)提供PGP签名,并将公共密钥分发到诸如 http://pgp.mit.edu 的密钥服务器。
安装GnuPG
从
http://www.gnupg.org/download/
下载
GPG
或使用您喜欢的软件包管理器进行安装,然后通过运行
gpg --version
命令进行验证。
注:在某些系统上,将使用较新的gpg2:gpg2 –version
生成密钥对
密钥对使我们可以使用GPG对工件进行签名,然后用户可以验证工件是否已由我们签名。执行命令根据提示提供用户名、邮箱,密码信息。
1 |
gpg --gen-key |
列出秘钥
1 |
gpg --list-keys |
列出可以使用的私钥
1 |
gpg --list-secret-keys |
输出中
pub
一行’/‘后的8位
HEX
字符串就是密钥
ID
上传到服务器
1 |
gpg --keyserver hkp://pool.sks-keyservers.net --send-keys <密钥ID> |
--keyserver
参数标识目标密钥服务器地址,并使用
--SEND-keys
是要分发密钥的
keyid
的。您可以通过
gpg --list-secret-keys
来获取密钥
ID
。一旦提交给密钥服务器,公钥将同步到其他密钥服务器。
pom配置
1 |
<build> |
上传仓库
提交 issues
首先你需要有一个账户:
点击注册
然后创建问题项:
创建问题
在未收到以解决的电子邮件之前,请不要进行部署
提交问题不困难,这里不截图讲了,如果使用域名,需要配置解析到问题URL,将会自动验证,正常情况下,白天提交,第二天早上就可以收到回复了。
配置身份验证
打开
maven
setting.xml
文件配置加入如下内容
1 |
<settings> |
pom配置
由于
OSSRH
始终运行最新版本的
Sonatype Nexus Repository Manager
,因此最好使用
Nexus Staging Maven
插件的最新版本。
1 |
<distributionManagement> |
或者,如果想使用
Maven
部署插件(默认),则需要添加完整的
distributionManagement
。
1 |
<distributionManagement> |
推荐使用
nexus-staging-maven-plugin
发布
注:settings.xml server元素中的id元素与snapshotRepositoryand 元素中的repository元素以及serverIdNexus Staging Maven插件的配置如何相同