AndroidStudio发布Maven

2019-03-25  本文已影响0人  已经是咸鱼的小涛orz

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

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

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

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

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


一、注册

注册sonatype

register.png

二、Issue

a) 创建issue

b) 等待审批通过

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

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

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

image.png

三、上传控件

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,不会进入暂存库

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

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

上一篇 下一篇

猜你喜欢

热点阅读