zoukankan      html  css  js  c++  java
  • 发布开源项目到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 中心仓库检索到,所以如果你发布之后没能及时检索到,请稍后再试。

  • 相关阅读:
    firefox, chrome常见插件
    数据库左连接left join、右连接right join、内连接inner join on 及 where条件查询的区别
    Springmvc + mybatis + spring 配置,spring事物
    Android如何连接MySQL数据库
    Android MP3录音实现
    Android RecyclerView的基本使用
    Java输入流之BufferReader和Scanner的用法!
    Android 网络通信框架Volley简介
    your project contains error(s),please fix them before running your application.错误总结
    新建android项目报错,代码中找不到错误
  • 原文地址:https://www.cnblogs.com/vegetate/p/9997284.html
Copyright © 2011-2022 走看看