发布Artifact到Maven中央仓库
Posted 清箫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了发布Artifact到Maven中央仓库相关的知识,希望对你有一定的参考价值。
1. 在GitHub上创建仓库,提交代码
2. 使用Github账号登录Travis CI平台,执行构建操作(optional)
要执行这一步,需要在源代码中再添加一个.travis.yml配置文件,具体参考:https://docs.travis-ci.com/user/getting-started/
理论上每次提交代码都会执行Build,所以不需要手动触发,我的实例:https://travis-ci.org/linus87/ebaysdk
3. 注册sonatype账号
https://issues.sonatype.org/secure/Dashboard.jspa
4. 在Dashboard上创建一个Issue
Project选择:Community Support - Open Source Project Repository Hosting
Issue Type选择:New Project
其他必填的有:Project URL,GIT URL, GroupID(参考http://central.sonatype.org/pages/choosing-your-coordinates.html),Summary。
Dashboard中有很多例子,随便参考一个即可,比如我的https://issues.sonatype.org/browse/OSSRH-42964
等待Sonatype的工作人员审核处理,等Ticket变成RESOLVED之后(这一步很快,最快可能只需几分钟),就可以进行下一步操作了。
5. 配置Maven
在工程的pom.xml文件中,引入Sonatype官方的一个通用配置oss-parent,这样做的好处是pom.xml的发布配置不需要自己配置了:
<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>9</version>
</parent>
添加License,SCM和Developers信息
<licenses>
<license>
<name>COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) VERSION 1.0</name>
<url>https://github.com/linus87/ebaysdk/eBaySDKLicense</url>
<distribution>repo</distribution>
</license>
</licenses>
<scm>
<tag>master</tag>
<url>git@github.com:linus87/ebaysdk.git</url>
<connection>scm:git@github.com:linus87/ebaysdk.git</connection>
<developerConnection>scm:git@github.com:linus87/ebaysdk.git</developerConnection>
</scm>
<developers>
<developer>
<name>linus_yan</name>
<email>linus.yan@hotmail.com</email>
<organization>linus87</organization>
</developer>
</developers>
6. 配置Repository Server
修改maven配置文件setting.xml,在servers中增加server配置。这里的账户名和密码就是第三步注册的账户和密码。
这里的构建仓库是https://oss.sonatype.org,是正式发布前的一个过段仓库。使用Maven提交后的Jar包必须先到这个库中,然后才能提交到中央仓库。
<servers>
<server>
<id>sonatype-nexus-snapshots</id>
<username>Sonatype 账号</username>
<password>Sonatype 密码</password>
</server>
<server>
<id>sonatype-nexus-staging</id>
<username>Sonatype 账号</username>
<password>Sonatype 密码</password>
</server>
</servers>
7. 使用GPG生成非对称秘钥。
如果是windows,推荐下载gpg4win: https://www.gpg4win.org/download.html。安装后再命令行中输入gpg --gen-key。过程中输入名字和邮箱等,记住Passphase,这是秘钥的密码。如果你用的是eclipse,安装完成之后需要重启eclipse。
Mac系统可以下载GPG Suite:https://gpgtools.org/。也可以安装gnupg,我就是安装的gnupg(用homebrew安装的)。
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew install gnupg
8. 部署到sonatype仓库
在完成第七步之后,在你本地装有gpg环境的命令行下输入下面这个命令,部署就算完成了。
mvn clean deploy -P sonatype-oss-release -Darguments="gpg.passphrase=密钥密码"
- 如果你是在MAC上操作,需要在mvn前添加sudo,因为gpg需要读取文件获取秘钥。
- 你可能碰到这个错:gpg: signing failed: Inappropriate ioctl for device,打开~/.bash_profile,添加这个环境变量:export GPG_TTY=$(tty)
- 但如果你是用过的Eclipse插件,应该这样配置(sonatype-oss-release位于org.snotype.oss:oss-parent:9.pom中)。但有可能不成功,因为Eclipse默认的Terminal可能没有gpg命令可以使用。
9. Release
打开https://oss.sonatype.org/#stagingRepositories,选中刚才发布的构建,点击上发的close按钮,并确认。当Activity变为closed之后(或刷新之后,Status为closed),点击Release按钮并确认。等半天之后,应该能在中央仓库看到Release的Artifact了。
10. 把gpg public key发送到keyserver
gpg --keyserver https://keyserver.ubuntu.com --send-keys A73C15B8689A6FA4
以上是关于发布Artifact到Maven中央仓库的主要内容,如果未能解决你的问题,请参考以下文章