如何上传项目到maven中央库

By | 2013 年 03 月 20 日

本篇主要讲一下如何上传自己的工程到maven中央库,供别人使用。
这里仅仅用文字描述一下。由于偶已经配置完成,因此没有办法截图给大家看了。。。。。

这里的环境为windows + git代码库(ssh模式) + maven 3.0.5,如果是linux可能会简单一些,而且网上也有不少相关的教程

一、准备工作
安装GnuPG
下载并安装gpg4win。这里使用版本为2以上。安装完后最好将安装目录加入到环境变量的path中,防止gpg2命令找不到
然后生成自己的key:
在命令行运行

gpg2 –gen-key

根据提示生成key。注意:在此过程中需要设定key的密码,这个密码应牢记,以备上传项目的时候使用。
然后执行

gpg2 –list-keys

列出生成的keys,记录下自己的key的id,如:

1024D/68EE839E /号后面的部分为ID

最后上传自己的key到key服务器,以便maven服务器读取release的时候可以读取到相应的key,我这里上传到ubuntu的服务器上:

gpg2 –keyserver keyserver.ubuntu.com –send-keys [XXX]

[XXX]为刚才记下的ID
至此,GnuPG的配置工作就完成了。
然后检查自己是否已经安装了git,保证git的安装目录下除了git命令外还有ssh-agent,用于windows密钥库密码代理使用。
还要检查自己的ssh的pubkey是否已经生成,git是否能使用自己的git服务器等。

二、正式开始
首先根据教程:
https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
申请一个自己的ID
然后根据教程上的要求在:
https://oss.sonatype.org/
上新建一个Ticket,填上自己的GourID等信息后,等待管理员回复。
在这期间可以根据教程修改自己工程的pom.xml文件,以满足项目提交的要求。再次这里要同时要把scm的相关配置配置好,否则可能会出现问题。
还要注意:项目的版本号后面一定要加上-SNAPSHOT,正式发布的时候,maven会自动去掉,否则将不能发布。

当管理员回复了你的Ticket,让你上传第一个release的时候,
我们首先打开命令行(以下命令都在此命令行窗口中进行)
开启ssh的代理(由于在prepare/perform的过程中需要连接到并操作git服务器,但此时自己的私钥密码没法输入,会造成maven无限挂起,故采用此办法):
1、运行ssh-agent,记录下其中的内容
2、接着运行:

set SSH_AUTH_SOCK=/tmp/ssh-LhiYjP7924/agent.7924
set SSH_AGENT_PID=2792

上面的信息,都可以在刚才记下的内容中找到匹配的,这里的数字肯能会变动,要注意。
3、运行代理ssh的命令:

ssh-add “/c/Users/xxx/.ssh/id_rsa”

上面引号中的是你的ssh key所在的路径,其中c是指盘符为c
此时会让你输入私钥的密码,输入回车即可。这样代理就成功了。

接着,我们正式发布工程
1、在刚才的窗口中(以下皆同)运行:

mvn release:clean

执行发布前的清理操作
2、然后,准备发布的版本]

mvn release:prepare

这里首先会提示输入版本号、tag号、下一个版本号等信息。继续。
之后会出现提示输入gpg密码,输入第一步配置当中设定的gpg密码,回车继续。
之后还可以看到新版本tag发布到了git,但是没有输入密码。。。。这是ssh-agent的功劳。
最终会出现SUCCESS
3、发布:

mvn release:perform

以上都完成后,可以打开
https://oss.sonatype.org/
登陆自己已经注册的帐号,按照最开始的那个官方教程8a章节,可以找到刚才发布的版本。
然后close它,接着release
可以看到刚才的版本消失了,这表明已经完成。

以上都顺利完成后,回复管理员已经回复的那个帖子,说自己已经上传了一个release。
过一段时间,管理员会确认并开通了与central的同步。同步会每2个小时进行一次。

三、查看战绩
等两个小时。。。(偶是过了一晚上,睡了一觉)
在http://search.maven.org上,根据groupid查找自己的工程
嘿嘿,出现了吧~~~~~

PS:
以后只要以相同的groupid发布别的项目,都不需要重新申请开通maven中央库。
仅仅需要执行那三条命令就行了。

发表评论