Sonatype Nexus在Maven Central Repository开户实践笔记

【前言】

阅读本文,您将了解如何使用Sonatype Nexus在Maven Central Repository开通账户,并提交、管理您的开源AndroidLibrary

首先,介绍一下名次概念:

(1)Sonatype: 一款著名的maven仓库管理软件

(2)aar:Google为Android开发所设计的一种library格式,全名为Android Archive Library,与Java Jar Library不同的是,aar除了java code之外还包含资源文件,即xml文件、图片、文字等,jar逐渐被aar所取代。

(3)Maven Central Repository:即Maven中央仓库,全球多数优秀的SDK均会在此发布,Android Studio也默认提供了对它的依赖支持。

【一、准备工作】

1、注册Sonatype Nexus账号( https://issues.sonatype.org

2、下载并安装GPG签名工具(gpg4win下载地址

3、登陆Maven Central Repository(https://oss.sonatype.org/),账号与Sonatype Nexus共用

【二、实践步骤】

第一步:在Sonatype上创建一个Project Ticket(链接地址)


Tips:如何填表

-Project : 选择Community Support - Open Source Project Repository Hosting
-Issue:选择Type New Project-Summary:填写项目名称
-Description:填写描述
-Group Id:域名反转,如www.redapplenet.com域名则反转为com.redapplenet。规则见(http://central.sonatype.org/pages/choosing-your-coordinates.html
-Project URL:项目的git主页地址。如https://gitee.com/wuguojin/android_core_library
-SCM url:项目的git下载地址,如https://gitee.com/wuguojin/android_core_library.git

提交成功后,管理员会在评论里向你核实一些信息,如询问你是否拥有上述域名,需要在Comment中回复管理员,方可继续审核。待管理员审核后,状态会变为Resolved,则表示ticket创建成功。

第二步GPG工具生成密钥,并上报服务器。

使用cmd命令行,依次执行如下命令:

gpg --version 
(获取版本号)

gpg --gen-key 
(生成密钥)过程中,根据命令行提示输入真实姓名、邮箱、密码(要记住、后面会用到)

gpg --list-keys --keyid-format SHORT 
(列出所有密钥)

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys A6BAB25C
(提交密钥到服务器,其中A6BAB25C替换为上一步获取到的八位短ID)

打开Kleopatra,在列表中找到刚刚创建的密钥对,右键-导出绝密密钥,选择导出位置,输入任意文件名以.pgp后缀结尾,点击OK导出。备用

第三步:配置AS工程中gradle.properties

## signing plugin
signing.keyId=FDA493CF  ##提交给服务器的短ID
signing.password=Huicent    ##生成密钥时输的密码
signing.secretKeyRingFile=../huicent.pgp ##上一步导出的.pgp密钥文件相对路径

## sonatype mavneCentral account
sonatype_username=xxx    ##sonatype注册名
sonatype_pwd=xxx        ##sonatype密码

## maven configs
maven_repo_url=https://oss.sonatype.org/service/local/staging/deploy/maven2/   ##见[附]
maven_snapshot_url=https://oss.sonatype.org/content/repositories/snapshots/    ##见[附]
maven_group_id=com.redapplenet    ##第1步创建ticket时填写的Group Id

第四步:编写gradle Task UploadArchieve等

LibraryModule的build.gradle,代码如下

apply plugin: 'maven'
apply plugin: 'signing' //使用signing plugin做数字签名
String moduleName = "CoreLibrary"

...(省略)...

//依赖maven中心仓库
repositories {
    mavenCentral()
}
// 创建gpg签名验证任务
signing {
    sign configurations.archives
}
//通过from函数指定代码源,这里是默认代码源
task generateSourcesJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs 
    classifier 'sources'
}
//创建source上传任务
artifacts {
    archives generateSourcesJar
}
//打包aar并提交mavenCentral
uploadArchives {
    repositories.mavenDeployer {
        beforeDeployment {
            MavenDeployment deployment -> signing.signPom(deployment)
        }
        repository(url: "${maven_repo_url}") {
            authentication(userName: "${sonatype_username}", password: "${sonatype_pwd}")
        }
        snapshotRepository(url: "${maven_snapshot_url}") {
            authentication(userName: "${sonatype_username}", password: "${sonatype_pwd}")
        }

        pom.project {
            name project.name
            packaging 'aar'
            groupId "${maven_group_id}"
            artifactId moduleName //模块名
            version '1.0.0-rc1' //aar版本号
            description 'AndroidCoreLib' //备注
            url 'https://gitee.com/wuguojin/android_core_library.git'

            scm {//Git项目地址
                url 'scm:git@gitee.com:wuguojin/android_core_library.git'
                connection 'scm:git@gitee.com:wuguojin/android_core_library.git'
                developerConnection 'git@gitee.com:wuguojin/android_core_library.git'
            }

            licenses {
                license {
                    name 'The Apache Software License, Version 2.0'
                    url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    distribution 'Huicent'
                }
            }
            developers {//开发者信息
                developer { 
                    id 'Huicent'
                    name 'Wu Guojin'
                    email 'wugj@redapplenet.com'
                }
            }
        }
    }
}

第五步:提交、发布aar

前提:第一步创建的project Ticket审核完成

(1)在Android Studio的Gradle面板找到uploadArchive指令,双击执行,等待console显示build successful,提交完成。

(2)登陆Snoatype Nexus,左侧栏点击Staging Repositories,在列表中找到刚刚提交仓库任务,选中点击Close,等待一段时间后(大约1分钟),刷新查看如果Close成功,则点击Release,即可完成发布。

    

(3)发布成功后约20分钟,一般可以引用成功当前版本了。
dependencies {
    ...[省略]...
    implementation 'com.redapplenet:HuicentCoreLibrary:1.0.4-rc3' //库sdk
    ...[省略]...
}
【附】MavenCentral地址
* Deploy snapshot artifacts into repository
https://oss.sonatype.org/content/repositories/snapshots

* Deploy release artifacts into the staging repository
https://oss.sonatype.org/service/local/staging/deploy/maven2

* Promote staged artifacts into repository 'Releases'
* Download snapshot and release artifacts from group
https://oss.sonatype.org/content/groups/public

* Download snapshot, release and staged artifacts from staging group
https://oss.sonatype.org/content/groups/staging



阅读更多
个人分类: Android开发随笔
相关热词: sonatype
上一篇Android 底部Tab部分View超出父容器边界的简单实现
下一篇定制ViewPager——切换效果、滑动速度、全自动轮播
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭