AndroidStudio发布Maven

工作中或多或少会写一些和业务流程没有直接关联的代码,比如框架、工具类或者自定义控件之类。一般情况下,我们或许会去以前的项目里面去粘贴复制。如果项目是以前公司的,这就会跟尴尬了;如果是现公司的不同项目,也意味着我们后期可能要维护好几份相同的代码,长期如此肯定是不方便的。
这时候,就应该把这些和业务流程无关的代码,放到开源类库里面。

一般而言,将Library打包发布到maven有两种情景

  • 私有仓库:使用 nexus 搭建,一般情况是公司自行搭建的私有Maven 仓库,当然也有个人开发者在自己的云服务器上搭建的
  • 公共仓库:发布到 Maven Central 仓库或 JCenter 仓库,基本上是个人项目,或者公司的开源项目

以下主要讲的是发布到公共仓库的方法,私有仓库的搭建可以自行查找nexus相关资料
基本流程如下

1.注册sonatype
2.提交issue
3.上传构件
4.发布构件
5.在之前的issue下回复工作人员发布成功
6.发布完成

以上步骤中,⑤只有在第一次发布release时需要


一、注册

注册sonatype

register.png

二、Issue

a) 创建issue

  • Project 选择Community Support - Open Source Project Repository Hosting (OSSRH)
  • Type 选择 New Project
  • Summary 填写项目名称
  • Description 填写项目描述
  • Attachment 如果有自己的域名需要上传域名证书
  • Group Id 项目工程所使用的groupId,可以使用com.github.xxxx。如果使用了自己的域名,需要证实自己拥有该域名,下面会详细说明
  • Project URL 项目所在地址,比如github地址
  • SCM url 源代码控制地址,比如github地址
  • Username 可以操作部署该项目的用户
  • Already Synced to Central 是否已经同步到中央仓库,很明显没有
    image.png

b) 等待审批通过

1.如果在上述创建issue过程中,groupId为自己的域名,管理员会让你先证实你拥有该域名

  • 将TXT记录添加到您的DNS引用此问题
  • 设置重定向到Github页面
  • 发送电子邮件至central@sonatype.com,从uniquext.com电子邮件地址引用此问题

2.审批通过后,管理员会根据你的groupId开辟工作空间,并告知各个库的使用方式,我们仅需要了解以下三个

3.当发布第一个正式版本时,需要来这里评论通知管理员
please comment on this ticket when you promoted your first release, thanks

image.png

三、上传控件

  • snapshot:同一个版本号可以发布多个,后发布的会覆盖先发布的
  • release:同一个版本号有且只能存在一个,上传时需要详细的配置及gpg效验

1.build.gradle编写

以下代码具体使用情况可参考项目LightPermission

a) 上传快照版
afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                pom.groupId = GROUP
                pom.artifactId = ARTIFACT_ID
                pom.version = VERSION_NAME
                repository(url: REPOSITORY_SNAPSHOTS) {
                    authentication(userName: "SONATYPE_USERNAME", password: "SONATYPE_PASSWORD")
                }
            }
        }
    }
}
b) 上传正式版
afterEvaluate { project ->
    uploadArchives {
        repositories {
            mavenDeployer {
                beforeDeployment {
                    MavenDeployment deployment -> signing.signPom(deployment)
                }

                pom.groupId = GROUP
                pom.artifactId = ARTIFACT_ID
                pom.version = VERSION_NAME

                pom.project {
                    name = PROJECT_NAME
                    description = PROJECT_DESCRIPTION
                    url = PROJECT_URL
                    scm {
                        url PROJECT_URL
                        tag VERSION_NAME
                        connection SCM
                        developerConnection SCM
                    }
                    developers {
                        developer {
                            name DEVELOPER_NAME
                            email DEVELOPER_EMAIL
                        }
                    }
                    licenses {
                        license {
                            name LICENSES_NAME
                            url LICENSES_URL
                        }
                    }
                }

                repository(url: REPOSITORY_RELEASE) {
                    authentication(userName: "SONATYPE_USERNAME", password: "SONATYPE_PASSWORD")
                }
            }
        }
    }

    signing {
        required {
            gradle.taskGraph.hasTask("uploadArchives")
        }
        sign configurations.archives
    }
    tasks.withType(Javadoc) {
        options.addStringOption('Xdoclint:none', '-quiet')
        options.addStringOption('encoding', 'UTF-8')
        options.addStringOption('charSet', 'UTF-8')
    }
    
}

2.上传

在gradle中执行uploadArchives命令,等待完成即可

3. gpg效验

什么是 GnuPG - 维基百科,自由的百科全书
以下流程使用平台为Windows,其他平台的童鞋请自行Google(╹▽╹)

a)下载 Gpg4win
b)安装 一路next就行 -。-
c)文件 -> 新建密钥对 -> 创建个人OpenPGP密钥对
d)在服务器上发布
e)导出到本地,文件后缀为.gpg

注:如果后续在暂存区关闭构件时报错,提示在服务器找不到密钥,可以在 设置 中选择 配置Klopatra,将密钥服务器修改为http://pool.sks-keyservers.net:11371

Klopatra.png

四、发布构件

如果上传的是snapshot,不会进入暂存库

  • 登录 并 打开Staging Repositories
  • 选择刚刚上传的构件,一般来说拉到最下面就是了,建议搜索筛选,后续可能会需要多次刷新列表状态
  • 点击 Close,等待暂存库状态变更
  • 如果没有报错,再次勾选构件,点击Release
  • 如果上述有报错(可在底部的Activity中查看),基本是第三步gradle配置的文图,根据错误描述修改即可
  • 发布后即可前往https://search.maven.org搜索到刚刚发布的构建了
image.png

五、回复Issue

回到最初的issue,通知管理员激活中央库同步

Central sync is activated for com.uniquext.android. After you successfully release, your component will be published to Central, typically within 10 minutes, though updates to search.maven.org can take up to two hours.

注:仅在第一次release时需要


如果只是发布snapshot的话,整个流程相对来说还是比较简单的;
发布release的话,gradle.properties中的配置一个也不能少,而且还需要配置上传GPG

由于不是一边操作一边编写文章,很多图没办法截,敬请谅解~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容