前言

当我们封装完成我们自己做的工具之后,那我们肯定想要发给别人让别人来进行使用,上传到中央仓库是一种引入时最方便的选择。

网上有很多教程,但是大多都是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到中央仓库(最完整的采坑记录)的更多相关文章

  1. 构建自己的jar包上传至Mvaen中央仓库和版本更新

    构建自己的jar包上传至Mvaen中央仓库和版本更新 一直羡慕别人制造轮子,开源项目,供别人使用:我也想这样,可以自己才疏学浅,本次就将自己写小工具上传到Maven的中央仓库. 一步一步详细教程演示如 ...

  2. gradle上传jar包到maven公共仓库

    首先这里说的中央仓库 是指的 https://issues.sonatype.org/ 而不是maven私服. 其次是使用gradle上传jar包,maven上传,网上有很多教程,这里不做赘述. 首选 ...

  3. Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2、PGP下载安装与密钥生成发布

    文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...

  4. Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):4、Maven项目转换与pom.xml配置

    文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...

  5. Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):5、Maven版本发布与后续版本更新(大结局)

    文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...

  6. Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1、JIRA账号注册

    文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...

  7. Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):3、Maven独立插件安装与settings.xml配置

    文章目录: Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):1.JIRA账号注册 Taurus.MVC-Java 版本打包上传到Maven中央仓库(详细过程):2.PGP ...

  8. mvn手动上传jar到本地仓库

    mvn install:install-file -Dfile=G:\elastic-project\workspace\out\artifacts\xxl_job_core_jar\xxl-job- ...

  9. 上传文件到Maven仓库

    1.上传jar到本地仓库 mvn install:install-file -DgroupId=org.csource -DartifactId=fastdfs-client-java -Dversi ...

随机推荐

  1. netData.go 阅读源码

    ) // 定义数据传输结构 type NetData struct {     // 消息体     Body interface{}     // 操作代号     Operation string ...

  2. SSH(Spring_SpringMVC_Hibernate)

    Users实体类 package com.tao.pojo; public class Users { private int id; private String name; private Str ...

  3. 1.2 lambda 表达式的语法

    1.2 lambda 表达式的语法 还以上一节中的排序为例.我们传递代码来检查某个字符串的长度是否小于另一个字符串的长度,如下所示: Integer.compare(first.length(), s ...

  4. BZOJ_4773_负环_倍增弗洛伊德

    BZOJ_4773_负环 Description 在忘记考虑负环之后,黎瑟的算法又出错了.对于边带权的有向图 G = (V, E),请找出一个点数最小的环,使得 环上的边权和为负数.保证图中不包含重边 ...

  5. SPPNET

    SPPNet Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 文章地址:https://ar ...

  6. 【Python3爬虫】你会怎么评价复仇者联盟4?

    一.写在前面 最近复仇者联盟4正在热映中,很多人都去电影院观看了电影,那么对于这部电影,看过的人都是怎么评价的呢?这时候爬虫就可以派上用场了! 二.主要思路 首先打开豆瓣电影,然后进入复仇者联盟4的详 ...

  7. Vue 进阶之路(四)

    之前的文章我们已经对 vue 有了初步认识,这篇文章我们通过一个例子说一下 vue 的样式绑定. 现在我们想要是想这样一个需求,页面上有个单词,当我们点击它的时候颜色变为红色,再点击一次变为原来的颜色 ...

  8. python——绘制二元高斯分布的三维图像,

    在对数据进行可视化的过程中,可能经常需要对数据进行三维绘图,在python中进行三维绘图其实是比较简单的,下面我们将给出一个二元高斯分布的三维图像案例,并且给出相关函数的参数. 通常,我们绘制三维图像 ...

  9. springcloud情操陶冶-springcloud config server(三)

    承接前文springcloud情操陶冶-springcloud config server(二),本文就不讲述server了,就简单阐述下client的应用 前话 config server在引入的时 ...

  10. arcgis api 4.x for js 结合 react 入门开发系列初探篇(附源码下载)

    你还在使用 JQuery 或者 Dojo 框架开发 arcgis api 4.x for js 吗?想试试模块化开发吗?随着前端技术的发展,arcgis api 4.x for js 也有了结合 re ...