享受简单上传体验:将Maven仓库迁移到GitHub

news/2024/5/2 3:14:49/文章来源:https://blog.csdn.net/LucasXu01/article/details/130392812

前言:我为什么放弃了Maven Central

之前我写过一篇《Android手把手,发布开源组件至 MavenCentral仓库》,文中详细介绍了如何发布组件到Maven Central中供所有开发者共用。但是最近使用下来,发现Sonatype JIRA 的Maven Center上传太麻烦了!

首先,在使用Maven Central上传构建结果时,需要通过Sonatype JIRA系统进行一系列的操作和申请,这包括申请JIRA账户、申请OSSRH仓库访问权限、签署Maven Central Repository服务条款等。这些过程相对繁琐和不直观,需要较高的技术水平和耐心。

其次,按照 官方的说法 ,在Maven Central上发布后的组件会在 30 分钟内同步到中央仓库,但搜索功能需要达到 4 个小时。这也是不太能忍受的。

  1. 管理权限:Maven Central需要开发者进行身份验证和授权才能上传构建结果,而使用GitHub作为Maven仓库,开发者可以更容易地管理上传权限。

  2. 上传流程:使用Maven Central上传构建结果需要开发者按照一定的规范命名文件、签名文件、验证文件等。而使用GitHub作为Maven仓库,上传构建结果更加简便和灵活,只需要将构建结果推送到指定的分支即可。

因此,如果您希望使用更加便利和灵活的方式来管理自己的Maven仓库,并且不愿意面对Maven Central上传的繁琐流程,使用GitHub作为Maven仓库是一个不错的选择。我们可以利用GitHub Pages来创建自己的Maven仓库。以下是详细步骤:

1、创建一个新的GitHub仓库

在GitHub上创建一个新的仓库。该仓库将用于存放您的Maven仓库。您可以将其命名为maven-repository或其他您喜欢的名称。

image-20230426171039018

2、克隆仓库

将新创建的仓库克隆到本地计算机上:

git clone https://github.com/your-username/maven-repository.git

3、在克隆的仓库中创建gh-pages分支

cd maven-repository
git checkout --orphan gh-pages
git rm -rf .

gh-pages分支的名字不能更改,必须是这个分支名。gh-pages分支是GitHub中特殊的一个分支,它与GitHub Pages服务相关。GitHub Pages是一项允许您托管静态网站和文档的免费服务。它为您的项目、个人或组织提供了一个简单的方式来托管静态内容,如项目文档、博客、个人简历等。gh-pages`分支的主要特点和用途如下:

  1. 分支名称:默认情况下,GitHub Pages会自动检测名为gh-pages的分支。如果在仓库中存在这个分支,GitHub将使用这个分支上的内容为您的项目生成静态网站。

  2. 独立于主分支gh-pages分支独立于项目的主分支(通常是mastermain分支),这意味着您可以将静态网站内容与项目源代码分开,使项目结构更清晰。

  3. 自动生成网站:当您将更改推送到gh-pages分支时,GitHub会自动为您生成和发布静态网站。您无需设置任何额外的服务器或配置。GitHub Pages还支持Jekyll,这是一个静态网站生成器,可以自动将Markdown文件转换为HTML,并根据模板和样式构建网站。

  4. 支持自定义域名:GitHub Pages允许您为托管的静态网站设置自定义域名。您可以将自己的域名与GitHub Pages网站关联,为您的项目提供一个易于访问的URL。

4、在安卓项目的build.gradle文件添加配置

apply plugin: 'maven'uploadArchives {repositories {mavenDeployer {repository(url: "file:///path/to/your/local/maven-repository")pom.groupId = 'com.example'pom.artifactId = 'mylibrary'pom.version = '1.0.0'}}
}

请将 repository(url: "file:///path/to/your/local/maven-repository")这一段代码中的/path/to/your/local/maven-repository``替换为本地克隆的maven-repository`的实际路径。

同时,根据您的项目情况,修改pom.groupIdpom.artifactIdpom.version

5、将项目部署到本地Maven仓库

在您的安卓项目中运行以下命令:

./gradlew uploadArchives

该步骤亦可用侧面板搞定(记得点大象按钮:Sync Project With Gradle Files):

image-20230426173708734

6、将本地Maven仓库推送到GitHub

将新部署的库推送到GitHub仓库:

cd /path/to/your/local/maven-repository
git add .
git commit -m "Deploy new library version"
git push origin gh-pages

7、在其他项目中使用新部署的库

现在,您的库已经托管在GitHub Pages上。要在其他项目中使用它,只需将以下内容添加到项目的build.gradle文件中:

repositories {maven {url 'https://your-username.github.io/maven-repository/'}
}dependencies {implementation 'com.example:mylibrary:1.0.0'
}

请将your-username替换为您的GitHub用户名。

现在,您已成功在GitHub上创建了自己的Maven仓库,并可以在其他项目中使用托管的库。

总结

相比Maven Center,采用github作为maven仓库的方式更加快捷便利,方便管理。可以master分支管理代码,gh-pages分支管理仓库,互不干扰且修改sdk发布组件时一站式搞定。

缺点是这种方式需要在repositories添加引用的地址:

repositories {maven {url 'https://your-username.github.io/maven-repository/'}
}

如果您是个人开发者或者一般项目维护者,非常推荐用这种方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_294353.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EMC VPLEX VS2 FRU故障备件更换基本流程

本文是针对VPLEX VS2 备件更换流程的详细操作方法,其实VS6也是类似的。 首先要说明一点,EMC VPLEX的任何硬件故障更换都不是直接插拔来完成的,一定要执行脚本要完成更换,本文就是描述如何启动这个脚本和常见的一些问题&#xff0…

一以贯之:从城市网络到“城市一张网”

《论语里仁》中子曰:“参乎,吾道一以贯之”。 孔子所说的“一以贯之”,逐渐成为了中国文化与哲学的重要组成部分,指明事物发展往往需要以标准化、集约化、融合化作为目标。这种智慧在数字化发展中格外重要。从云计算、大数据技术模…

C++——入门基础知识

0.关注博主有更多知识 C知识合集 目录 1.命名空间 1.1命名空间的定义 1.2命名空间的使用 1.3命名空间定义的补充 2.输入与输出 3.缺省参数 3.1全缺省参数 3.2半缺省参数 3.3缺省参数的补充 4.函数重载 4.1C为什么支持函数重载? 5.引用 5.…

Clion开发STM32之串口封装(HAL库)

前提 在开发STM32过程中,芯片提供的串口引脚一般是不会发生变化的,所以为了方便移植,借助HAL提供的注册回调函数自定义,这边重新进行简要的封装此工程开发是以Clion为开发的IDE,用keil只需将对应的文件进行移植即可.文章末尾附带…

Java——Java面向对象

该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。 概述: Java是面向对象的程序…

XR技术在手术中的应用调研

虚拟现实、增强现实、混合现实等概念和技术是最近几年发展起来的,相信你对去年大火的元宇宙深有感触,元宇宙属于虚拟现实的技术范畴,头号玩家电影也让虚拟现实走进大众的视野中。早在2015年,笔者参加一次展会时就有接触&#xff0…

py_rabbitmq

安装 服务端 https://www.jianshu.com/p/2fb6d5ac17b9 客户端 pip install pika文档 https://rabbitmq.com/tutorials/tutorial-one-python.html 简单示例 生产者 import pika import rabbitmq_study.settings as settingscredentials pika.PlainCredentials(settings…

手记系列之四 ----- 关于使用MySql的一些经验

前言 本篇文章主要介绍的关于本人在使用MySql记录笔记的一些使用方法和经验,温馨提示,本文有点长,约1.5w字,几十张图片,建议收藏查看。 一、MySql安装 下载地址:https://dev.mysql.com/downloads/ 在安装MySql之前&a…

闪电加密和隐藏加密文件夹忘记密码怎么办?

闪电加密和隐藏加密是文件夹加密超级大师的两种文件夹加密类型,它们都拥有超快的加密算法,可以瞬间加密超大文件夹。那么这两种文件夹加密类型忘记密码该怎么办呢?下面我们一起来了解一下吧。 闪电加密和隐藏加密文件夹找回密码 首先&#x…

【计算机图形学】课堂习题汇总

在直线的光栅化算法中,如果不考虑最大位移方向则可能得到怎样的直线? A:斜率为1的线 B:总是垂直的 C:离散的点,无法构成直线 D:总是水平的 在直线的改进的Bresenham算法中,每当误…

【五一创作】使用Scala二次开发Spark3.3.0实现对MySQL的upsert操作

使用Scala二次开发Spark实现对MySQL的upsert操作 背景 在我们的数仓升级项目中,遇到了这样的场景:古人开发的任务是使用DataStage运算后,按照主键【或者多个字段拼接的唯一键】来做insert then update,顾名思义,也就…

【C++】vector OJ练习

文章目录 1. 只出现一次的数字思路讲解AC代码 2. 杨辉三角思路讲解AC代码 3. 只出现一次的数字 III思路讲解AC代码 4. 只出现一次的数字 II思路讲解AC代码 5. 删除有序数组中的重复项思路讲解AC代码 6. 数组中出现次数超过一半的数字思路讲解AC代码 这篇文章我们来做几道vector…

服装店铺装修有哪些窍门?做好这3点,顾客主动上门

现在街边有各种各样的服装店,有的服装店客流不断,有的服装店却很冷清,导致这种现象的原因有很多,比较重要的一点就是你的服装店铺装修没做好。 你的服装店铺装修足够吸引人吗? 什么样的服装店铺装修才能吸引顾客&#…

【VM服务管家】VM4.0平台SDK_2.5 全局工具类

目录 2.5.1 全局相机:全局相机设置参数的方法2.5.2 全局相机:获取全局相机列表的方法2.5.3 全局通信:通信管理中设备开启状态管理2.5.4 全局通信:接收和发送数据的方法2.5.5 全局变量获取和设置全局变量的方法 2.5.1 全局相机&…

最新发布!面向开发者的 ChatGPT Prompt Engineering 免费教程,吴恩达与OpenAI合作打造!...

就在几小时之前,吴恩达在Twitter上宣布了与OpenAI合作的最新免费教程:《ChatGPT Prompt Engineering for Developers》 我们可以通过下面的链接,直达官网网站: https://www.deeplearning.ai/short-courses/chatgpt-prompt-enginee…

JavaScript用map实现Hashmap

📝个人主页:爱吃炫迈 💌系列专栏:数据结构与算法 🧑‍💻座右铭:道阻且长,行则将至💗 文章目录 正如我们已经看到的,Map 对象是一个键值对。最初,M…

[ICLR 2023] Token Merging: Your ViT But Faster

Contents IntroductionToken MergingExperimentsImage ExperimentsDesign choicesModel SweepComparison to Other WorksVisualizations Video ExperimentsAudio Experiments References Introduction 作者提出了一种 token 合并方法 Token Merging (ToMe),能够在不…

( 字符串) 647. 回文子串 ——【Leetcode每日一题】

❓647. 回文子串 难度:中等 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使…

( 栈和队列) 20. 有效的括号 ——【Leetcode每日一题】

❓20. 有效的括号 难度:简单 给定一个只包括 (,),{,},[,]的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合…

*2.5 迭代法的收敛阶与加速收敛方法

学习目标: 了解迭代法的基本概念和原理。学习者需要理解迭代法的基本概念和原理,包括迭代过程、迭代格式、收敛性等基本概念。 熟练掌握迭代法的收敛阶和收敛速度。学习者需要了解迭代法的收敛阶和收敛速度,掌握如何计算迭代法的收敛阶和收敛…