发布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中央仓库的主要内容,如果未能解决你的问题,请参考以下文章

使用Nexus搭建Maven代理仓库

如何发布Maven依赖到中央仓库

Dev 日志 | 如何将 jar 包发布到 Maven 中央仓库

maven 发布到中央仓库 gpg 证书

将 Smart 发布到 Maven 中央仓库

一份可以发布到MAVEN中央仓库的POM