这篇文章主要讲怎样将自己的jar包上传到maven 中央仓库,以便在项目中直接使用而不用构建自己的私服
例如:
com.fundebug
fundebug-java
0.2.0
但是,Maven中央仓库并不支持直接发布jar包。我们需要将jar包发布到一些指定的第三方Maven仓库,然后该仓库再将jar包同步到Maven中央仓库。
其中,最"简单"的方式是通过Sonatype OSSRH仓库来发布jar包。接下来,我会介绍如何将jar包发布到Sonatype OSSRH。
本教程所使用的系统配置如下:
- OS: MacOS 10.14.1
- JDK:1.8.0_192
- Maven:3.5.4
下面开始配置
1、申请sonatype 账号
JIRA是一个项目管理服务,类似于国内的Teambition。Sonatype通过JIRA来管理OSSRH仓库。
注册地址:https://issues.sonatype.org/secure/Signup!default.jspa
2、创建issue
通过在JIRA上创建issue来申请发布新的jar包,Sonatype的工作人员会进行审核,审核不算严格,一般按照要求填写不会有问题。
创建链接:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134
创建issue的时候需要填写下面这些信息:
- Summary
简单描述一下你的项目内容 - Description
详细描述你的项目功能 - Group Id
你需要发布的项目的group Id - Project URL
你的开源项目的 github 或者gitee 地址 - SCM url
你的开源项目的github 或者 gitee 仓库地址
参考地址 https://issues.sonatype.org/browse/OSSRH-53141
提交申请之后 由于时差可能需要半天到一天才会有回复回复内容如下:
这个时候你需要把你的域名添加一天TEXT 解析:
OSSRH-xxxxx 到 https://issues.sonatype.org/browse/OSSRH-xxxxxx
添加完成之后需要回复此issue 告诉对方已经添加完成
没有什么问题的话 对方会审核通过并告诉你可以上传jar包的仓库了 此时你需要在上传第一个包的时候回复此issue
此时issue的status变为RESOLVED,我们就可以进行下一步操作了。
3、装并配置GPG
发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性。因此,我们需要在本地安装并配置GPG。
安装GPG
MacBook安装GPG非常简单,下载并安装GPG Suite即可。
生成GPG密钥对
gpg --gen-key
生成密钥时将需要输入name、email以及password。password在之后的步骤需要用到,请记下来。
上传GPG公钥
将公钥上传到公共的密钥服务器,这样其他人才可以通过公钥来验证jar包的完整性。
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys CAB4165C69B699D989D2A62BD74A11D3F9F41243
其中CAB4165C69B699D989D2A62BD74A11D3F9F41243为密钥的ID,可以通过gpg --list-keys命令查看
gpg --list-keys
/Users/XXXXXX/.gnupg/pubring.kbx
----------------------------------
pub dsa2048 2010-08-19 [SC] [expires: 2020-06-15]
85E38F69046B44C1EC9FB07B76D78F0500D026C4
uid [ unknown] GPGTools Team
sub elg2048 2010-08-19 [E] [expires: 2020-06-15]
sub rsa4096 2014-04-08 [S] [expires: 2024-01-02]
pub rsa2048 2019-01-03 [SC] [expires: 2021-01-02]
CAB4165C69B699D989D2A62BD74A11D3F9F41243
uid [ultimate] kiwenlau
sub rsa2048 2019-01-03 [E] [expires: 2021-01-02]
4、 配置maven settings.xml 此配置文件在电脑位置可能不同, 根据各自的设置找到位置修改
ossrh
Fundebug
passsword
5、配置pom.xml
pom.xml挺长的。根据Sonatype OSSRH的要求,以下信息都必须配置:
- Supply Javadoc and Sources
- Sign Files with GPG/PGP
- Sufficient Metadata
- Correct Coordinates
- Project Name, Description and URL
- License Information
- Developer Information
- SCM Information
我的配置文件:
4.0.0
cn.ipokerface
mybatis
pom
1.0.0
IPoker-MybatisOperator
IPoker-MybatisGenerator
IPoker-MybatisGeneratorMavenPlugin
IPoker-Mybatis
Mybatis-Operator Parent Project.
项目的协议<-->
The Apache Software License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
repo
A not business-friendly OSS license
开发者的信息<-->
pokerface
pokerface
[email protected]
Developer
+8
https://gitee.com/PokerFace_Fo/IPoker-MybatisOperator
https://gitee.com/PokerFace_Fo/IPoker-MybatisOperator.git
1.0.0-SNAPSHOT
UTF-8
UTF-8
1.8
3.4.6
1.3.7
1.3.7
2.2.1
3.3.9
3.5.4
3.5.2
3.0.1
true
default
true
org.apache.maven.plugins
maven-source-plugin
2.2.1
package
jar-no-fork
org.apache.maven.plugins
maven-javadoc-plugin
2.9.1
package
jar
org.apache.maven.plugins
maven-gpg-plugin
1.6
verify
sign
ossrh-sonatype-repository
https://oss.sonatype.org/content/repositories/snapshots/
ossrh-sonatype-repository
https://oss.sonatype.org/service/local/staging/deploy/maven2/
6、发布Jar包
执行mvn clean deploy处理,即可将jar包发布到Sonatype OSSRH仓库。
mvn clean deploy -projects IPoker-MybatisOperator,IPoker-MybatisGenerator,IPoker-MybatisGeneratorMavenPlugin
我的项目含有多个模块,因此使用-projects选项来指定发布modules。
第一次执行mvn clean deploy命令时,需要输入GPG密钥的密码。
mvn clean deploy命令执行成功的输出是这样的(部分日志):
[INFO]
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ mybatis-generator-maven-plugin ---
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0.jar
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0.jar (23 KB at 18.1 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0.pom
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0.pom (6 KB at 6.0 KB/sec)
Downloading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/maven-metadata.xml
Downloading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/maven-metadata.xml
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/maven-metadata.xml
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/maven-metadata.xml (350 B at 0.2 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/maven-metadata.xml
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/maven-metadata.xml (271 B at 0.3 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0-sources.jar
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0-sources.jar (13 KB at 10.2 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0-javadoc.jar
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0-javadoc.jar (54 KB at 35.4 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0.jar.asc
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0.jar.asc (833 B at 2.4 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0.pom.asc
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0.pom.asc (833 B at 2.6 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0-sources.jar.asc
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0-sources.jar.asc (833 B at 2.3 KB/sec)
Uploading: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0-javadoc.jar.asc
Uploaded: https://oss.sonatype.org/service/local/staging/deploy/maven2/cn/ipokerface/mybatis-generator-maven-plugin/1.0.0/mybatis-generator-maven-plugin-1.0.0-javadoc.jar.asc (833 B at 2.5 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] IPoker-MybatisOperator ............................. SUCCESS [ 25.716 s]
[INFO] IPoker-MybatisGenerator ............................ SUCCESS [ 13.398 s]
[INFO] IPoker-MyBatisGeneratorMavenPlugin ................. SUCCESS [ 18.559 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 57.788 s
[INFO] Finished at: 2019-11-17T18:58:36+08:00
[INFO] Final Memory: 32M/582M
[INFO] ------------------------------------------------------------------------
7、 确认发布 close release
mvn clean deploy命令执行成功,使用sonatype账号登陆:https://oss.sonatype.org/#stagingRepositories,就可以看到你所发布的jar包了:
选中对于的repository之后,点击箭头所指的close,close时会检查发布的构件是否符合要求。若符合要求,则close成功,成功之后点击箭头所指的release,即可正式将jar包发布到Sonatype OSSRH仓库。
如果需要重新发布或者发布更新包,则重复6、7步就可以了
参考
- Guide to uploading artifacts to the Central Repository
- OSSRH Guide
- Maven入门教程
- 如何将JAR包发布到Maven中央仓库