(最新)开源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

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值