发布开源项目到Maven 中心仓库

相信很多程序猿朋友都或多或少写过一些通用库文件,也有很多人会秉着开源的精神将代码分享到类似 Github 之类的代码托管网站去。

       其实大家分享代码的时候,目的在于让更多的人使用,但是如果仅仅是放在 Github 这些工具上等人家下载使用,其实很多人是会觉得很麻烦的,那么有什么方法能够帮助我们在不下载 Github 上的源码的时候,使用这些代码吗?

       回答自然是可以的,类似于 Maven,Gradle(其实 Gradle 获取代码的机制也是基于 Maven 的) 这种自动构建工具能够帮助你从网上获取指定的代码,并配置到你的项目中,因此我们只要能够将自己的代码上传到 Maven 中心仓库中,别人就能够通过几行代码对你的项目进行引用了。

       接下来,我们会一步一步讲解如何将开源项目上传到 Maven 中心仓库。

       首先,我先简单介绍一下我自己的平台环境配置:

              Platform:MacOS Yosemite.

              IDE:Android Studio 1.0.2.

              Project:Android Library.

       其实其他平台的也很类似,但是为了方便起见,我就简单介绍一下基于以上环境配置的分享步骤了。

       先放上Maven 官方的指南地址:http://central.sonatype.org/pages/ossrh-guide.html

1.申请sonatype账号,并建立项目请求

       Maven 的相关管理工作貌似是托管给了 sonatype.org 这个网站进行处理,当我们希望向 Maven 中心仓库中加入一个新的项目的时候,必须先在这里申请一个账号,并提供相应的项目信息。

       申请账号的地址在这里: https://issues.sonatype.org/secure/Signup!default.jspa

       申请完成之后,我们需要提供相应的项目信息,地址在这里:https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134

       填写项目信息的网页虽然是英文的,但是都挺简单,很多输入框下方都是相应的输入提示,因此我就不多做介绍了,图1中简单介绍了需要填写的相关信息:



图1 提供项目相关信息

       点击 Create 之后,你就会进入一个 jira 页面(sonatype 使用jira 来追踪每一个项目进度),与此同时你注册时使用的邮箱中也会收到一封邮件提示你,任务创建成功,正在等待处理。

       接下来我们需要做的就是等待,maven 项目只有在 sonatype 自己审核通过之后才能够正式发布,根据官网上的描述是大约耗时两天,不过我的项目第二天一早就已经发送邮件通知我创建成功了,为他们的速度点个赞。


2.上传项目到 Maven 中心仓库

       如果你收到了 sonatype 的反馈邮件,确认已经为你创建好了新项目,你就可以开始上传你的项目了。

       我这次是准备将自己新写的一个 Android 点击效果库文件上传到 Maven 仓库,由于我使用的是 Android Studio,因此我直接在我的 Library 项目的 gradle.build 文件中进行配置。

       首先将以下代码添加到 gradle.build 文件尾部:

[ruby] view plain copy
  1. apply plugin: 'maven'  
  2. apply plugin: 'signing'  
  3.   
  4. signing {  
  5.     sign configurations.archives  
  6. }  
  7.   
  8. group = "com.kifile"  
  9. archivesBaseName = "MaterialView"  
  10. version = "1.0"  
  11.   
  12. uploadArchives {  
  13.     repositories {  
  14.         mavenDeployer {  
  15.             beforeDeployment {  
  16.                 MavenDeployment deployment -> signing.signPom(deployment);  
  17.             }  
  18.   
  19.             repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {  
  20.                 authentication(userName: ossrhUsername, password: ossrhPassword)  
  21.             }  
  22.   
  23.             snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {  
  24.                 authentication(userName: ossrhUsername, password: ossrhPassword)  
  25.             }  
  26.   
  27.             pom.project {  
  28.                 name 'MaterialView'  
  29.                 packaging 'aar'  
  30.                 description 'This project is build to let the view looks like a material design widget when touched. '  
  31.                 url 'https://github.com/Kifile/MaterialView'  
  32.   
  33.                 scm {  
  34.                     connection 'scm:git:https://github.com/Kifile/MaterialView.git'  
  35.                     developerConnection 'scm:git:https://github.com/Kifile/MaterialView.git'  
  36.                     url 'https://github.com/Kifile/MaterialView.git'  
  37.                 }  
  38.   
  39.                 licenses {  
  40.                     license {  
  41.                         name 'The Apache License, Version 2.0'  
  42.                         url 'http://www.apache.org/licenses/LICENSE-2.0.txt'  
  43.                     }  
  44.                 }  
  45.   
  46.                 developers {  
  47.                     developer {  
  48.                         id 'kifile'  
  49.                         name 'Kifile Chou'  
  50.                         email 'kifile@kifile.com'  
  51.                     }  
  52.                 }  
  53.             }  
  54.         }  
  55.     }  
  56. }  

       在上面的代码中,大家请将根域中的 group,archiveBaseName,version以及 uploadArchives#pom.project 中的相关描述信息改成自己的就好了。

       这些信息将会在接下来上传的时候,自动打包成 Maven 项目,并封装相应信息。

       在这里我们就已经配置好了相应的版本信息,接下来我们需要配置上传时需要的签名以及密码等相关信息。

       首先我们需要创建一个 gpg 签名秘钥,并将公钥上传到指定服务器。

       在 MacOS 下,我们可以下载一个叫做GPGTools (http://www.gpgtools.org)的工具生成我们的签名文件。

       安装好工具之后,我们在 Launchpad 中能够看到一个叫做GPG Keychains 的软件,打开之后,我们选择新建一个秘钥,参看图2:


图2创建 GPG 秘钥

       点击新建之后,填写完相应信息之后,点击生成秘钥,我们就获取到了签名秘钥,之后右键选中创建的秘钥,点击 Send public key to key server.就能够将本地公钥上传到指定服务器了,参看图3。


图3上传公钥至公共服务器

      上传完成之后,我们就可以正式配置签名信息以及你的 Maven 账户信息了,我们在 Library Module 的根目录下新建一个 gradle.properties 文件,内容如下:

[ruby] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. signing.keyId=输入在新建秘钥完成后显示的 keyId  
  2. signing.password=输入你的秘钥密码  
  3. signing.secretKeyRingFile=/Users/你的用户名/.gnupg/secring.gpg  
  4.   
  5. ossrhUsername=你在 sonatype 上的账户名  
  6. ossrhPassword=你在 sonatype 上的密码  


      现在,你已经成功的将上传信息配置好了,通过命令行,进入 Library Module 所在的目录,输入 gradle uploadArchives 就能够将你的文件上传到 Maven 中央库了。


3.发布你的应用

       你以为上传到 Maven 中央库就结束了吗?

       才没有结束呢,到目前为止,你只是将你的文件上传到了 Maven 的一个私有服务器,是不能被其他人所访问的。如果你想正式发布你的应用,还要继续下面的步骤。

              a.进入 Maven 项目控制台

                  进入以下地址:https://oss.sonatype.org/,并使用 sonatype 的账号密码在右上角进行登录。

              b.查找你上传的项目
                  如果你登录成功,在左侧的导航栏,你会看到一个叫做 Staging Repositories 的选项,点击他,你会发现出现了很多列表选项,如下图4。


图4 仓库列表

        根据列表名称,你会发现一个以你的 groud id 去掉点号后加上一个四位数字命名的Repository,例如这里是叫做 comkifile1000,选中它,你会发现上方的 Close 按钮亮起,当你确认上传无误之后,你可以点击 Close 按钮,关闭掉这个仓库,不允许再次上传。如果关闭成功,你点击刷新以后会发现,Release 按钮亮起,点击它即可发布。如果关闭失败,你可以看看下方的界面,查找一下失败原因,再次上传代码,关闭后发布。


       到了这里,整个 Maven项目的发布流程已经结束了。

       请注意,发布并不是实时生效的,我的代码差不多是在3个小时左右,才能够在 Maven 中心仓库检索到,所以如果你发布之后没能及时检索到,请稍后再试。

posted @ 2016-09-10 14:01  vegatate  阅读(201)  评论(0编辑  收藏  举报