当前位置: 首页 > news >正文

Android最简化发布模块到mavenCentral

最近折腾jitpack发布,发现他对于项目结构要求比较严格。基本标配就是一个library目录加app,和settings.gradle,gradle这样的配置才行。多模块或者没有模块都比较麻烦。而且之前我遇到过一次,编译等了足足8个小时。

今天研究了mavenCentral,借助神迹github插件,现在已经十分轻松,而且很方便在android studio中操作。直接推荐。

1. 注册

central.sonatype
推荐直接使用github登录即可。官方推荐使用github,能分担他们的服务压力。

2. namespaces

检查是否有Namespaces, 如图:
没有的话,点击Register New Namespace创建。
namespace

3. UserName和Password

登录 Sonatype Central Portal

点击右上角用户头像 →View User Tokens

进入Generate User Token

记录生成的usernamepassword,保存好,后续不可见,后面使用1️⃣。

4. GPG

# 安装 GPG brew install gnupg # 安装 pinentry-mac(用于密码输入) brew install pinentry-mac # 验证安装 gpg --version

也可以选择,自己下载:下载地址

安装完成后在控制台输入gpg --version,即可查看版本号。

生成gpg密钥对:

# 生成密钥(推荐使用 RSA 4096) gpg --full-generate-key

操作(这里最后的passphrase密码,后面有用2️⃣):

请选择您要使用的密钥类型: (1) RSA 和 RSA (2) DSA 和 Elgamal (3) DSA(仅用于签名) (4) RSA(仅用于签名) (9) ECC(签名和加密) (10) ECC(仅用于签名) 您的选择是? 1 RSA 密钥的长度应在 1024 位与 4096 位之间。 您想要使用的密钥长度?(3072) 4096 请设定这个密钥的有效期限。 0 = 密钥永不过期 密钥的有效期限是?(0) 0 真实姓名: Your Name 电子邮件地址: your-email@example.com 注释: Maven Central Deploy Key # 设置一个强密码(passphrase),后续需要使用

查看(丢失了可以重复查看,后面有用3️⃣):

# 列出所有密钥 gpg --list-keys # 列出私钥及 keygrip(用于免密配置) gpg --list-secret-keys --keyid-format LONG ### 输出结果: ---------------------------------- pub rsa4096/123213131423 2026-01-01 [SC] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD1234 uid [ultimate] Your Name <your-email@example.com> sub rsa4096/XXXXXXXXXXXXXXXX 2026-01-01 [E]

上传到公开的密钥服务器(任一成功即可) :

gpg --keyserver keys.openpgp.org --send-keys xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD1234 gpg --keyserver pgp.mit.edu --send-keys xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD1234 gpg --keyserver keyserver.ubuntu.com --send-keys xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxABCD1234

导出(后面有用4️⃣):

gpg --export-secret-keys -o /Documents/xxx/xxx/secring.gpg

5. 配置属性

接下来,完形填空。创建配置文件,并添加上面操作的:1️⃣,2️⃣,3️⃣,4️⃣。其中3️⃣ 这个ID,注意只要最后的8位

touch ~/.gradle/gradle.properties # 1️⃣ mavenCentralUsername=2xxxXx mavenCentralPassword=Sf111111xxxxdxxxxdddxxxK # 2️⃣ signing.password=xxxx # 3️⃣ signing.keyId=abcd1234 # 4️⃣ signing.secretKeyRingFile=/Users/xxx/XXX/secring.gpg

6. 集成模块插件

直接在module的build.gradle中集成:

plugins{...id("com.vanniktech.maven.publish")version"0.35.0"}mavenPublishing{publishToMavenCentral()signAllPublications()}mavenPublishing{coordinates("com.example.mylibrary","library-name","1.0.3")pom{name="My Library"description="A description of what my library does."inceptionYear="2026"url="https://github.com/username/mylibrary/"licenses{license{name="The Apache License, Version 2.0"url="http://www.apache.org/licenses/LICENSE-2.0.txt"distribution="http://www.apache.org/licenses/LICENSE-2.0.txt"}}developers{developer{id="username"name="User Name"url="https://github.com/username/"}}scm{url="https://github.com/username/mylibrary/"connection="scm:git:git://github.com/username/mylibrary.git"developerConnection="scm:git:ssh://git@github.com/username/mylibrary.git"}}}

多个模块的时候,复制这些到其他子模块。修改其他的配置version,name等模块信息。

7. 发布

然后选择模块下的publishToMavenCentral,点击。你不用编译,他自己会编译。

注意这个时候,还没有发布:

再上到publishing。点击发布:

左边变成了· PUBLISHING状态。
等待几分钟。发布成功!

另外

建议在开发中,不要每次有一点修改就去发布。这样白费时间。错了还得修改。在前面发布的时候,不要急着publishToMavenCentral,而是先publishToMavenLocal()

在使用模块的项目中:
配置根目录settings.gradle:
添加本地mavenLocal()和一些镜像站:

dependencyResolutionManagement{repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)repositories{mavenLocal()//追加一个本地查找maven{url'https://maven.aliyun.com/repository/public'}maven{url'https://maven.aliyun.com/repository/google'}maven{url'https://maven.aliyun.com/repository/central'}maven{url'https://repo.huaweicloud.com/repository/maven/'}maven{url'https://mirrors.cloud.tencent.com/nexus/repository/maven-public/'}maven{url'https://mirrors.163.com/maven/repository/maven-public/'}google()mavenCentral()maven{url'https://www.jitpack.io'}}}
http://www.jsqmd.com/news/194337/

相关文章:

  • 应变2026:(副)主任药师考试98%考生关注的靠谱机构测评 - 医考机构品牌测评专家
  • 出海行业热点 | 苹果App Store搜索结果将新增更多广告位、《燕云十六声》国际服玩家突破1500万
  • Playwright文件上传与下载测试完全指南
  • 破除信息差!五大(副)主任药师靠谱培训机构深度横评 - 医考机构品牌测评专家
  • (副)主任技师考试十大医考机构排名:2026靠谱机构推荐 - 医考机构品牌测评专家
  • 应用——Web服务器项目代码解析
  • 行业热点资讯 | 3200万!鸿蒙生态爆发!豆包DAU破亿,阿里升级新一代语音模型Qwen3-TTS
  • 2026最新延吉炸鸡本土品牌top5推荐!延吉本地特色,延边大学等地优质餐饮店及加盟连锁品牌深度解析/选择指南,匠心品质与地道风味助力味蕾盛宴 - 全局中转站
  • AdMergeX 增长洞察月刊:十二月回顾与展望
  • 软件体系架构课堂测试–架构分析
  • 三款主治医师刷题 APP 实测:2026 实战提分工具优选 - 医考机构品牌测评专家
  • 净现值计算
  • WRF模拟:搭建天气实验室、处理GFS/ERA5驱动场、运行台风暴雨案例、修改土地利用与地形、设计敏感性试验与Python专业分析等
  • 败者树是一种完全二叉树结构,用于高效选出多个归并段当前元素中的最小关键字对应段号
  • 污染物在土壤-地下水系统中的完整迁移路径:从概念模型构建到风险管控决策——深度解读T/LNSES 004技术指南与重金属/有机物迁移预测全流程,适用于污染场地评估、修复工程、地下水保护
  • 股指期货 API 入门指南:如何获取实时行情与构建交易系统
  • 计算机软件按功能分为两大类:系统软件和应用软件
  • 2026年精华瓶订制厂家top5推荐,广东广州等地优质品牌深度解析及选择指南 - 全局中转站
  • 2026最新!9个降AI率工具测评,本科生必看
  • 基于NSGAⅡ多目标优化的遗传算法实现7次b样条轨迹规划时间能量冲击最优化策略代码
  • 深度测评!本科生必用8个AI论文平台:开题报告与文献综述全解析
  • 生物膜的结构与功能:膜蛋白驱动的生命屏障与药物靶点核心
  • 从零开始:使用 Python Flask 和 DeepSeek API 打造智能 AI 聊天助手
  • 宽字节注入详解
  • 使用radare2 尝试破解warp 编辑器
  • 强烈安利9个AI论文写作软件,继续教育学生轻松搞定论文!
  • 物联网赋能新能源汽车:技术融合与产业变革
  • 强烈安利!研究生必备TOP10 AI论文平台测评
  • 执医备考必看!2026年十大执业医考机构最新排名揭晓 - 医考机构品牌测评专家
  • 睿本云接入高德券