(最新)开源Android github项目到Maven上详细过程

Posted 怪兽N

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(最新)开源Android github项目到Maven上详细过程相关的知识,希望对你有一定的参考价值。

简介

我开源了一个android树状图控件到github, 然后也想用implementation 'io.github.guaishoun:gyso-treeview:1.0.1'这种方式给别人使用,根据sonatype推荐的Android gradle方式一直没成功。最终通过学习别人开源gradle配置及网站上的博客实现了。下面记录了详细的过程。

特别说明本文系统环境为windows。

步骤总结:

把你的开源项目上传到github
在https://issues.sonatype.org/创建问题,并且等待管理员审核至solved状态
创建密钥并上传公钥到服务
配置开源library的gradle并编译
处理maven开源状态,并通知管理员同步
测试开源引用

1开源项目上传到github

这个不详细说了,因为这个步骤如果不会的话,本文就不大适合啦~~~

本文使用的是示例为https://github.com/guaishouN/android-thinkmap-treeview

2 sonatype创建问题

进入https://issues.sonatype.org/这个网站,如果没有账号那就先到注册, 并记住用户名和密码,后面要用。

接下来的目标是创建一个项目等待审核为solved状态,截图如下



填写说明:

A–>选Community Support - Open Source Project Repository Hosting (OSSRH)

B–>New Project

C–>摘要,如An android open source project for tree view

D–>描述 A custom view for tree nodes.

E–>这个不能随便填要注意命名规范,可以参考链接,例如上传github项目https://github.com/guaishouN/android-thinkmap-treeview,那么取名io.github.guaishoun。这个名字不规范,会审核不通过

F–>如https://github.com/guaishouN/android-thinkmap-treeview

G–>如https://github.com/guaishouN/android-thinkmap-treeview.git, 对比F项多了**.git**

H–>注册的sonatype用户名

I–>选择No

那么完成后创建后是这样的

新建状态为open(开放),等一段时间管理员会给你反馈。如果是github开源项目,例如他要求你规范命名及新建一个github仓库证明开源仓库是你的。如果都没问题了,那么管理员会把问题状态改为solved(修复),这时你就可以上传你的开源库了。最后过两三天管理员就会把它关闭,所以状态为解决时,要抓紧时间上传你的开源。

3创建密钥对并上传到服务

sonatype新建问题状态变成resolved后,下载一个签名工具https://www.gnupg.org/download/index.html

文件新建密钥对


然后到处公钥GuaishouN_0x163517B0_public.asc如下图

打开网站上传公钥OpenPGP Keyserver (ubuntu.com),如下


然后再search key就可以搜索到了

接着导出私钥GuaishouN_0x163517B0_SECRET.gpg

其中keyId右键可见,如下图

记录以下三个信息,后面要用

serect.gpg文件保存的路径
密钥keyId(为密钥ID的后8位,如上图的keyid为163517b0)
密码

4配置library的gradle文件

这段官方有说明,但是我一直没上传成功,所以参看了一些已经开源的github项目改的gradle文件。

官方链接为OSSRH Guide - The Central Repository Documentation (sonatype.org)chrisbanes/gradle-mvn-push: Helper to upload Gradle Android Artifacts to Maven repositories (github.com)

我的实践方法如下,是成功打包aar并上传的。

首先在C:\\Users\\Mr. Deng\\.gradle目录下新建gradle.properties文件

#https://issues.sonatype.org/的用户名和密码
NEXUS_USERNAME=GuaishouN
NEXUS_PASSWORD=*******

#gpg签名密码,及到导出的签名文件
signing.keyId=163517b0
signing.password=********
signing.secretKeyRingFile=C\\:\\\\Users\\\\Mr. Deng\\\\.gradle\\\\GuaishouN_0x163517B0_SECRET.gpg

修改library目录下的build.gradle(注意不是工程的build.gradle)

apply plugin: 'com.android.library'
apply plugin: 'maven-publish'
apply plugin: 'signing'

version = '1.0.1'
android {
	...
}

dependencies {
	...
}

task androidSourcesJar(type: Jar) {
    archiveClassifier.set("sources")
    from android.sourceSets.main.java.source
    exclude "**/R.class"
    exclude "**/BuildConfig.class"
}

publishing {
    publications {
        release(MavenPublication) {
            // group id,发布后引用的依赖的 group id
            groupId 'io.github.guaishoun'
            // 发布后引用的依赖的 artifact id
            artifactId 'gyso-treeview'
            // 发布的版本
            version version
            // 发布的 arr 的文件和源码文件
            artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
            artifact androidSourcesJar
            pom {
                // 构件名称,可以自定义
                name = 'gyso-treeview'
                // 构件描述
                description = 'A custom tree view for Android, designed for easy drawing some tree nodes (e.g. think mind and tree nodes). Includes smoothly zoom, move, limit and center fix animation support, and allows easy extension so you can add your own child node\\'s customs view and touch event detection.'
                // 构件主页
                url = 'https://github.com/guaishouN/android-thinkmap-treeview'
                // 许可证名称和地址
                licenses {
                    license {
                        name = 'MIT License'
                        url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                // 开发者信息
                developers {
                    developer {
                        name = 'GuaishouN'
                        email = '674149099@qq.com'
                    }
                }
                // 版本控制仓库地址
                scm {
                    url = 'https://github.com/guaishouN/android-thinkmap-treeview'
                    connection = 'scm:git@github.com:guaishouN/android-thinkmap-treeview.git'
                    developerConnection = 'scm:git@github.com:guaishouN/android-thinkmap-treeview.git'
                }
            }
        }
    }
    repositories {
        maven {
            // 发布的位置,这里根据发布的版本区分了 SNAPSHOT 和最终版本两种情况
            def releasesRepoUrl = "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
            def snapshotsRepoUrl = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
            url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
            credentials {
                // 这里就是之前在 issues.sonatype.org 注册的账号
                username NEXUS_USERNAME
                password NEXUS_PASSWORD
            }
        }
    }
}

signing {
    sign publishing.publications
}

最后非常重要,在项目根目录输入

gradlew build publish

编译并上传

5 处理maven开源状态,并通知管理员同步

打开https://s01.oss.sonatype.org/,使用https://issues.sonatype.org/的账号密码登录,搜索你项目的关键词

成功上传可以看到上图的搜索界面

首先勾选要更新的项目,当前状态为open,然后点close,最后点击release

然后回到https://issues.sonatype.org/回复管理员你完成上传了

然后管理员会回复你,仓库已同步等信息

6 等待同步,测试Maven仓库同步

仓库在staging下是不能使用implement同步的,要等一小段时间,同步到了releas仓库才能使用.

dependencies {
    	implementation 'androidx.dynamicanimation:dynamicanimation:1.0.0'
   		implementation 'io.github.guaishoun:gyso-treeview:1.0.1'
}

可以到maven去搜索看看能不能搜索到你的仓库了

https://search.maven.org/

7 总结

本文针对Android的开源做了详细的说明,当然过程也遇到了很多问题,文章没贴出来。如果有地方写得不对,欢迎指出。

[引用]
https://blog.csdn.net/lizhengjava/article/details/81704283
https://blog.csdn.net/tingqinxiyin/article/details/88106319
https://blog.csdn.net/u013200864/article/details/52954601
https://www.cnblogs.com/aimqqroad-13/p/9645776.html

以上是关于(最新)开源Android github项目到Maven上详细过程的主要内容,如果未能解决你的问题,请参考以下文章

(最新)开源Android github项目到Maven上详细过程

(最新)开源Android github项目到Maven上详细过程

最新最全的 Android 开源项目合集

Android项目实战(三十八):2017最新 将AndroidLibrary提交到JCenter仓库(图文教程)

Android项目实战(三十八):2017最新 将AndroidLibrary提交到JCenter仓库(图文教程)

Android_LIFE帮(基于最新百度地图API的开源项目)