Mac使用Gradle上传jar到中央仓库(最完整的采坑记录)
前言
当我们封装完成我们自己做的工具之后,那我们肯定想要发给别人让别人来进行使用,上传到中央仓库是一种引入时最方便的选择。
网上有很多教程,但是大多都是maven和windows的环境。
今天就来记录一下,在mac上使用gradle上传jar到mvn中央仓库所要踩的坑。
大致步骤
1、注册issues.sonatype.org
2、创建issue
3、根据issue完成相应操作
4、生成公钥私钥并上传
5、签名打包
6、上传审核
7、下载验证
下面是详细过程
注册并创建issue
首先进issues.sonatype.org,然后进行注册,一定要记住用户名密码
完成登录进去创建issue



注意项:group id如果是自己的域名,就像我这样,那么他会要求让你验证这个域名是否属于你,需要修改dns中的txt类型为一个固定值,他会在issue反馈的时候提出

如果你没有自己的域名,建议直接使用com.github.你的名字,这样的group id,这样不需要验证
创建完成issue之后就根据issue提出的要求一步步完成

需要把你的包发布到snapshot和release仓库去,在这之前你需要生成一个gpg格式的公钥和私钥,用于打包的时候进行签名。
生成公钥和私钥
PS:当前使用的MacOS,windows网上有对应的方法
首先下载工具并安装
https://gpgtools.org/
下载之后不要用界面生成,使用命令行操作,操作如下:
1、首先查看是否正确安装
gpg --version
2、生成公钥对
gpg --gen-key
根据提示操作,输入密码的时候注意别忘了
3、查看生成的秘钥对
gpg --list-keys --keyid-format short
出现如下所示:
pub rsa2048/00CBBEC9 2019-01-15 [SC] [expires: 2021-01-14]
ADCBD7F4329E51312B8C28641881FCD00DCBBEC9
uid [ultimate] LinkinStar linkinstar@foxmail.com
sub rsa2048/50182126 2019-01-15 [E] [expires: 2021-01-14]
其中的00CBBEC9后面有用,我们暂时称为编号
4、导出私钥
gpg --export-secret-keys -o secring.gpg
会在你当前目录生成一个secring.gpg
这个后面有用
5、同步公钥到公网
gpg2 --keyserver hkp://keyserver.ubuntu.com --send-keys 00CBBEC9
别人需要用公钥去验证是你的签名,注意00CBBEC9为上面你的编号
上传jar
配置build.gradle,在后面加上如下代码
plugins {
id 'java'
// 主要是下面两个插件要加上
id 'maven-publish'
id 'signing'
}
task sourcesJar(type: Jar) {
from sourceSets.main.allJava
classifier = 'sources'
}
task javadocJar(type: Jar) {
from javadoc
classifier = 'javadoc'
}
javadoc {
options{
encoding "UTF-8"
charSet 'UTF-8'
}
}
publishing {
publications {
mavenJava(MavenPublication) {
groupId project.group
artifactId project.name
version "${version}"
from components.java
artifact sourcesJar
artifact javadocJar
// https://docs.gradle.org/current/dsl/org.gradle.api.publish.maven.MavenPublication.html
pom {
name = "http-helper(你的项目名称)"
description = "easy to send http request(你的项目描述)"
url = "https://github.com/LinkinStars/http-helper"
licenses {
license {
name = "The Apache License, Version 2.0"
url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
}
}
developers {
developer {
id = "LinkinStar(开发者id)"
name = "LinkinStar(开发者名称)"
email = "linkinstar@foxmail.com(你的邮箱)"
}
}
scm {
connection = "scm:git:https://github.com/LinkinStars/http-helper(你的源码地址)"
developerConnection = "scm:git:https://github.com/LinkinStars/http-helper(你的源码地址)"
url = "https://github.com/LinkinStars/http-helper(你的源码地址)"
}
}
}
}
repositories {
maven {
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2"
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots"
// 如果version以SNAPSHOT结尾就会上传到快照仓库,如果不是就上传到release仓库
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
credentials {
username = "${NEXUS_USERNAME}"
password = "${NEXUS_PASSWORD}"
}
}
}
}
signing {
sign publishing.publications.mavenJava
}
配置gradle.properties
NEXUS_USERNAME=你注册issues.sonatype.org的用户名
NEXUS_PASSWORD=你注册issues.sonatype.org的密码
signing.keyId=00CBBEC9(你的公钥编号)
signing.password=(你的私钥密码)
signing.secretKeyRingFile=/Users/LinkinStar/Downloads/secring.gpg(你的私钥存放路径)
然后使用publish发布,就是执行gradle的任务

如果没有报错就上传成功了,注意先上传snapshot版本
确认上传成功,并上传release版本
进入https://oss.sonatype.org/content/repositories/snapshots/
按照group id去查询你的快照版本是否已经上传成功
如果发现已经上传成功,那么证明你成功一半了。
然后根据前一步骤进行release版本的上传
上传如果没有问题,就要正式发布了
登录以下网址查看
https://oss.sonatype.org
在右上角有个登录,使用issues.sonatype.org注册的用户名密码登录
然后在左边找到

然后在右边的窗口中找到你刚才上传的release版本,应该在最下方

选中之后,点击close

然后在下方的activity窗口中可以看到close的过程,如果出现下方这样的情况就失败了,下方失败的原因是因为前面验证错误,原因是没有将公钥同步到公网

close成功之后,选中之后,点击close旁边的release按钮即可
过一段时间你可以在https://oss.sonatype.org/service/local/staging/deploy/maven2 查看到你上传的包了
通知审核
到这里位置我们已经完成全部上传的工作了,记得我们一开始提交的issue吗?
我们现在要告诉管理员我们已经上传完成了然后他会帮我们审核通过,这只是第一次需要这样做,以后就不需要 了。

收到最后的反馈就说明全部成功了,等待两个小时左右,你就可以从中央仓库找到你上传的jar包了。这个时间有长有短。
然后再等一天左右的时间,你能在mvn的中央仓库网站上看到你的jar了。
坑总结
1、不要使用mac的gpg页面进行导出,导出的文件不是我们使用的私钥文件格式不正确
2、version很重要只有以SNAPSHOT结尾的才能正常上传到快照仓库
3、注意公钥一定记得同步到公网上去,不然签名验证会失败
4、晚上中央仓库网速不太好,因为国外这个时候用的人多,白天速度快一些,容易上传
作者:LinkinStar
未经允许,不能转载
https://www.cnblogs.com/linkstar/p/10289584.html
Mac使用Gradle上传jar到中央仓库(最完整的采坑记录)的更多相关文章
- 构建自己的jar包上传至Mvaen中央仓库和版本更新
构建自己的jar包上传至Mvaen中央仓库和版本更新 一直羡慕别人制造轮子,开源项目,供别人使用:我也想这样,可以自己才疏学浅,本次就将自己写小工具上传到Maven的中央仓库. 一步一步详细教程演示如 ...
- gradle上传jar包到maven公共仓库
首先这里说的中央仓库 是指的 https://issues.sonatype.org/ 而不是maven私服. 其次是使用gradle上传jar包,maven上传,网上有很多教程,这里不做赘述. 首选 ...
- Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2、PGP下载安装与密钥生成发布
文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...
- Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):4、Maven项目转换与pom.xml配置
文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...
- Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):5、Maven版本发布与后续版本更新(大结局)
文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...
- Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1、JIRA账号注册
文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...
- Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):3、Maven独立插件安装与settings.xml配置
文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...
- mvn手动上传jar到本地仓库
mvn install:install-file -Dfile=G:\elastic-project\workspace\out\artifacts\xxl_job_core_jar\xxl-job- ...
- 上传文件到Maven仓库
1.上传jar到本地仓库 mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java -Dversi ...
随机推荐
- 安卓---RedioButton(单选按钮)、CheckBox(复选按钮)
<RadioGroup android:layout_width="fill_parent" android:layout_height="wrap_content ...
- STM32标准库GPIO操作
STM32标准库GPIO操作 STM32任何外围设备的使用都分为两部分:初始化和使用.体现在代码上就是:(1)有一个初始化函数(2)main函数中的使用 1.初始化GPIO 初始化GPIO函数代码: ...
- SQL Server 锁详解
锁是一种防止在某对象执行动作的一个进程与已在该对象上执行的其他进行相冲突的机制.也就是说,如果有其他人在操作某个对象,那么你旧不能在该对象上进行操作.你能否执行操作取决于其他用户正在进行的操作. 通过 ...
- Python爬虫入门教程 64-100 反爬教科书级别的网站-汽车之家,字体反爬之二
说说这个网站 汽车之家,反爬神一般的存在,字体反爬的鼻祖网站,这个网站的开发团队,一定擅长前端吧,2019年4月19日开始写这篇博客,不保证这个代码可以存活到月底,希望后来爬虫coder,继续和汽车之 ...
- WinForm加载外部类库项目的集成开发模式
在项目开发中有一定的团队用到了Nuget.Coding:但是这用起来还是不太方方便,在Winform中呢,我们可以把一个人的项目当作一个类库项目,因为它生成的是一个dll文件,也就是单一文件,拥有了它 ...
- Python-字符版gif图
一.背景 上一篇文章我们讲了怎么做自己的炫酷二维码,需要的移驾Python-炫酷二维码,本片文章我们讲述下怎么把一张图片处理成字符版图片,就是说使用字符替代每个像素的颜色,形成一个由字符组成的图片,并 ...
- 优雅地 `async/await`
async/await 虽然取代了回调,使用类似同步的代码组织方式让代码更加简洁美观,但错误处理时需要加 try/catch. 比如下面这样,一个简单的 Node.js 中使用 async/await ...
- Spring boot 继承 阿里 autoconfig 配置环境参数
前提:基于springboot 项目 1. 配置pom.xml 文件 <plugin> <groupId>com.alibaba.citrus.tool</groupId ...
- TensorFlow读写数据
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 从零开始学TensorFlow[01-搭 ...
- IDEA编写css样式报错
粗心大意!浪费了30分钟时间,必须记录一下! 报错图片 琢磨了半天,没想出是哪里错了,很无奈!!!!!!!!! 度娘:ctrl+shift+alt+H,设置成NONE就可以了 试了一下,果然好使,不再 ...