将jar包发布到Maven中央仓库(Maven Central Repository),这样所有的Java开发者都可以使用Maven直接导入依赖,例如weixin-java-mp:
com.gitee.wxtoos
weixin-java-mp
3.5.0
但是,Maven中央仓库并不支持直接发布jar包。我们需要将jar包发布到一些指定的第三方Maven仓库,然后该仓库再将jar包同步到Maven中央仓库。
其中,最"简单"的方式是通过Sonatype OSSRH仓库来发布jar包。接下来,我会介绍如何将jar包发布到Sonatype OSSRH。
本教程所使用的系统配置如下:
JIRA是一个项目管理服务,类似于国内的Teambition。Sonatype通过JIRA来管理OSSRH仓库。
注册地址:https://issues.sonatype.org/secure/Signup!default.jspa
需要填写Email, Full Name, Username以及password,其中Username与Password后面的步骤需要用到,请记下来。
通过在JIRA上创建issue来申请发布新的jar包,Sonatype的工作人员会进行审核,审核不算严格,一般按照要求填写不会有问题。
创建链接:https://issues.sonatype.org/browse/OSSRH-52362
创建issue的时候需要填写下面这些信息:
大家可以参考我申请发布 weixin-java-mp 时所填写的内容:OSSRH-52362
本次申请很快就通过了,可能会存在今天提交明天后天才会审核通过,但是审核并不是那么严格。
发布到Maven仓库中的所有文件都要使用GPG签名,以保障完整性。因此,我们需要在本地安装并配置GPG。
安装GPG
MacBook安装GPG非常简单,下载并安装GPG Suite即可。
生成GPG密钥对
gpg --gen-key
生成密钥时将需要输入name、email以及password。password在之后的步骤需要用到,请记下来。
上传GPG公钥
将公钥上传到公共的密钥服务器,这样其他人才可以通过公钥来验证jar包的完整性。
发送地址:hkp://keyserver.ubuntu.com:11371
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys CAB4165C69B699D989D2A62BD74A11D3F9F41243
其中CAB4165C69B699D989D2A62BD74A11D3F9F41243为密钥的ID,可以通过gpg --list-keys命令查看
setting.xml为Maven的全局配置文件,在MacBook上的位置为/usr/local/Cellar/maven/3.5.4/libexec/conf/settings.xml,我们需要将第1步配置的Username和Password添加到
标签中,这样我们才能将jar包部署到Sonatype OSSRH仓库:不要填错哦
ossrh
https://issues.sonatype.org/ 用户名
https://issues.sonatype.org/ 密码
pom.xml挺长的。根据Sonatype OSSRH的要求,以下信息都必须配置:
配置时参考我的pom.xml,根据需要修改即可。
4.0.0
com.gitee.wxtoos
wx-java
3.5.0
pom
WxJava - Weixin/Wechat Java SDK
微信开发Java SDK
https://gitee.com/wxToos/WxJava
The Apache License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
GuoFeng
[email protected]
https://gitee.com/wxToos/WxJava
scm:git:https://gitee.com/wxToos/WxJava.git
scm:git:[email protected]:wxToos/WxJava.git
https://gitee.com/wxToos/WxJava
1.7
1.7
UTF-8
4.5
9.4.17.v20190418
org.jodd
jodd-http
3.7.1
provided
com.squareup.okhttp3
okhttp
3.7.0
provided
org.apache.httpcomponents
httpclient
${httpclient.version}
org.apache.httpcomponents
httpmime
${httpclient.version}
commons-codec
commons-codec
1.10
commons-io
commons-io
2.5
org.apache.commons
commons-lang3
3.5
org.slf4j
slf4j-api
1.7.24
com.thoughtworks.xstream
xstream
1.4.11
com.google.guava
guava
20.0
com.google.code.gson
gson
2.8.0
joda-time
joda-time
2.9.7
test
ch.qos.logback
logback-classic
1.1.11
test
com.google.inject
guice
3.0
test
org.testng
testng
6.10
test
org.mockito
mockito-all
1.9.5
test
org.eclipse.jetty
jetty-server
${jetty.version}
test
org.eclipse.jetty
jetty-servlet
${jetty.version}
test
org.assertj
assertj-guava
3.0.0
test
redis.clients
jedis
2.9.0
provided
org.projectlombok
lombok
1.18.8
provided
ossrh
https://oss.sonatype.org/content/repositories/snapshots
ossrh
https://oss.sonatype.org/service/local/staging/deploy/maven2/
doclint-java8-disable
[1.8,)
-Xdoclint:none
release
org.apache.maven.plugins
maven-source-plugin
2.2.1
attach-sources
jar-no-fork
org.apache.maven.plugins
maven-javadoc-plugin
2.9.1
attach-javadocs
jar
${javadoc.opts}
UTF-8
zh_CN
org.apache.maven.plugins
maven-gpg-plugin
1.6
sign-artifacts
verify
sign
org.apache.maven.plugins
maven-surefire-plugin
2.17
true
org.sonatype.plugins
nexus-staging-maven-plugin
1.6.3
true
ossrh
https://oss.sonatype.org/
true
org.apache.maven.plugins
maven-release-plugin
2.5.1
true
false
release
deploy
org.apache.maven.plugins
maven-checkstyle-plugin
2.17
true
quality-checks/google_checks.xml
true
true
true
verify
check
执行mvn clean deploy处理,即可将jar包发布到Sonatype OSSRH仓库。
mvn clean deploy -P release
如果存在一个项目中含有多个模块的情况下可以指定命令来当个上传
mvn clean deploy -projects XXXX
第一次执行mvn clean deploy命令时,需要输入GPG密钥的密码。
mvn clean deploy -P release 命令执行成功并有success 出现时,说明已经成功了。
mvn clean deploy命令执行成功,使用JIRA账号登陆:https://oss.sonatype.org/#stagingRepositories,就可以看到你所发布的jar包了,登录的账户名密码和 https://issues.sonatype.org/ 上的账户名密码一致
选中对于的repository之后,点击箭头所指的close,close时会检查发布的构件是否符合要求。若符合要求,则close成功,成功之后点击箭头所指的release,即可正式将jar包发布到Sonatype OSSRH仓库。
release成功大概2个小时之后,该构件就会同步到Maven中央仓库: