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 ...
随机推荐
- 渐进式Web应用(PWA)入门教程(下)
上篇文章我们对渐进式Web应用(PWA)做了一些基本的介绍. 渐进式Web应用(PWA)入门教程(上) 在这一节中,我们将介绍PWA的原理是什么,它是如何开始工作的. 第一步:使用HTTPS 渐进式W ...
- loj6045 「雅礼集训 2017 Day8」价
我们考虑最小割. 我一开始觉得是裸的最小割,就直接S到每个减肥药连up+p[i]的边,减肥药到药材连inf边,药材到T连up,然后得到了40分的好成绩. 之后我发现这是一个假的最小割,最小割割的是代价 ...
- bzoj 2500 幸福的道路 树上直径+set
首先明确:树上任意一点的最长路径一定是直径的某一端点. 所以先找出直径,求出最长路径,然后再求波动值<=m的最长区间 #include<cstdio> #include<cst ...
- Error【0003】:配置桥接网络报错
1.1 问题背景 在配置cosole宿主机的桥接网络环境时,在修改完/etc/sysconfig/ifcg-ethx和/etc/sysconfig/ifcg-brx后,执行service networ ...
- ajax 和jsonp 不是一码事
由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socket通讯 ...
- samba 基本配置及自定义控制
Samba简介: Samba实现的是Linux和Windows之间的一种共享,为两种不同的操作系统架起了一座桥梁,使Linux系统和Windows系统之间能够实现互相通信,共享文件系统.打印机及其他资 ...
- 《前端之路》 之 前端 安全 XSS 原理以及防御手段
什么是 XSS 一.XSS 什么是 XSS XSS,即 Cross Site Script , 翻译过来就是 跨站脚本攻击:为了和 css 有所区分,因而在安全领域被称为 XSS. 什么是 XSS 攻 ...
- 【由浅至深】redis 实现发布订阅的几种方式
非常感谢依乐祝发表文章<.NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐>,对csredis作了一次完整的诠释. 前言 提到消息队列,最熟悉无疑是 rabbitmq,它基 ...
- 使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking
一旦你的程序docker化之后,你会遇到各种问题,比如原来采用的本地记日志的方式就不再方便了,虽然你可以挂载到宿主机,但你使用 --scale 的话,会导致 记录日志异常,所以最好的方式还是要做日志中 ...
- 史诗级Java资源大全中文版
本文来自GitHub 上 Awesome - java 系列的资源整理.awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具.数据库.框架.模板.安全.代 ...