https://zhuanlan.zhihu.com/p/41650855
和很多人一样,开发好自己的开源项目之后。希望上传至Maven中央仓库,最近折腾这个事情也是大费周章,主要源于网上太多教程和帖子复制来粘贴去。还有遇到的很多问题,没法得到很好的解决。于是我尝试成功之后,趁着记忆清晰,写下这篇教程,希望帮助更多的人。
首先感谢几篇教程,给了我不少帮助。
发布项目到Maven中央仓库的最佳实践www.jianshu.com人类身份验证 - SegmentFaultsegmentfault.com
下面我总结下整个过程。
发布项目需要的准备事情:
1.去sonatype申请账号,然后创建一个issue。
2.安装gpg秘钥管理工具,生成秘钥并发布。
3.maven 和pom.xml 的依赖配置和setting.xml的配置
Sonatype是一个通过Nexus对开源项目提供托管服务的网站。先去
https://issues.sonatype.org/secure/Dashboard.jspalink.jianshu.com
这里,可能需要,自行搭建梯子。没有账号就点击sign up注册一个。
注册完了之后,登陆网站。点击create,创建一个issue。填写一下Summary, Group Id, Project URL, SCM URL的内容。
project选择Community Support - Open Source Project Repository Hosting (OSSRH)
Issue TypeRequired 是New Project
其他按照按常规填写,写下星号的就可以了。group ID 最好是你个人拥有的域名,审核时候需要询问你是否是域名主人。
然后就创建issue。
新建的issue状态是open的,然后你需要等待工作人员审核,因为有时差,所以可能会隔天。英文水平不好的,可以借助谷歌翻译等软件。
审核通过,你会收到一封邮件。上面是一些仓库的地址。
2.1 安装gpg
gpg(GunPG)是一款用于生成秘钥的加密软件。
Windows下载地址:
GnuPG - Downloadwww.gnupg.org
Ubuntu可以使用如下命令进行安装:
sudo apt-get install gnupg
mac可以使用brew安装:
brew install gpg
gpg 常用的命令
gpg --version
检查安装成功没gpg --gen-key
生成密钥对gpg --list-keys
查看公钥gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 公钥ID
将公钥发布到 PGP 密钥服务器gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 公钥ID
查询公钥是否发布成功2.2 创建秘钥并发布
运行命令gpg --gen-key 生成密钥对,按照提示输入真实姓名,邮箱等。然后生成秘钥时候,会让你输入两次密码,这个密码要记住。后续会用到。
完成后运行命令gpg --list-keys ,查看本地秘钥
gpg --list-keys
然后发布秘钥至秘钥服务器。使用上面最后两个命令发布和验证。
3.1 pom配置
pom.xml 中必须包括:name、description、url、licenses、developers、scm 等基本信息
repository
https://oss.sonatype.org/service/local/staging/deploy/maven2/
ossrh
https://oss.sonatype.org/content/repositories/snapshots
disable-javadoc-doclint
[1.8,)
-Xdoclint:none
release
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.3.2
true
false
release
deploy
org.apache.maven.plugins
maven-compiler-plugin
3.0
1.8
org.apache.maven.plugins
maven-gpg-plugin
1.5
sign-artifacts
verify
sign
org.apache.maven.plugins
maven-source-plugin
2.2.1
attach-sources
jar-no-fork
org.apache.maven.plugins
maven-javadoc-plugin
2.10.4
attach-javadocs
package
jar
${javadoc.opts}
The Apache Software License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
repo
https://gitee.com/ironzheng/pikachu.git
https://gitee.com/ironzheng/pikachu.git
http://pikachu.luway.cn
yourname
youremail
yoururl
这里给出pom.xml示例,其中开发者信息修改成自己的。
3.2 maven的setting.xml配置
需要添加sonatype的身份认证,就是你一开始申请账号时候的用户名和密码。id要和pom.xml中distributionManagement 中的snapshotRepository和repository保持一致。
id
yourname
yourpass!
3.3 发布项目
运行下面命令,进行发布。
mvn clean install deploy -P release -Dgpg.passphrase=生成秘钥时候你的密码
一般如果pom.xml中没有添加自动release的插件的话,你需要登陆
Nexus Repository Manageross.sonatype.org
手动操作发布。
这是自动发布的插件
org.sonatype.plugins
nexus-staging-maven-plugin
1.6.3
true
ossrh
https://oss.sonatype.org/
true
登陆网站之后,输入你的账号密码,点击左侧的Staging Repositories ->在搜索栏输入你的 groupId -> 勾选你的构件并点击 close -> 点击 tab 栏的 release。
然后就成功发布你的项目了,过个半天一天应该就能找到搜到你的项目了。
开发时候总会遇到各种各样的问题,这里持续做些总结。
1.自动发布时候遇到这个问题。
这个一般是秘钥不对导致的,处理办法是重新生成秘钥和上传验证。再试一次应该可以解决。
2.发布秘钥时候,no route to host
这个可能是由于网络问题导致无法访问秘钥服务器,办法是或者换个网络,和换个秘钥服务器地址。下面是候选地址
3.javadoc问题
由于java8版本可能会导致注解的一些不符合规范,可以添加我示例pom.xml中的注释来解决这个问题。
disable-javadoc-doclint
[1.8,)
-Xdoclint:none
4.如果遇到Java home路径问题,可以手动制定java路径来解决。
2.5
${java.home}/../bin/javadoc