前言

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

网上有很多教程,但是大多都是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. sort.go

    package clientv3 type SortTarget int type SortOrder int const (     SortNone SortOrder = iota     So ...

  2. orcl数据库先决条件检查时失败

    在服务里面开启下面服务,在cmd输入 services.msc 就能打开[服务] 在cmd输入以下命令 我的是server服务没开,然后开了资源共享,就安装成功了

  3. BZOJ_2595_[Wc2008]游览计划_斯坦纳树

    BZOJ_2595_[Wc2008]游览计划_斯坦纳树 题意: 分析: 斯坦纳树裸题,有几个需要注意的地方 给出矩阵,不用自己建图,但枚举子集转移时会算两遍,需要减去当前点的权值 方案记录比较麻烦,两 ...

  4. jdk源码剖析一:OpenJDK-Hotspot源码包目录结构

    开启正文之前,先说一下源码剖析这一系列,就以“死磕到底”的精神贯彻始终,JDK-->JRE-->JVM(以openJDK代替) 最近想看看JDK8源码,但JDK中JVM(安装在本地C:\P ...

  5. monkey----测试中的要求

       测试中的要求:   (1)导出的log命名以测试机的imei号为主或者是以测试机的编号为主,这样方便找到测试机,避免出现问题后无法找到机器,难以定位问题. 导出的log文件后缀名以.log命名, ...

  6. 在后台主机中托管SignalR服务并广播心跳包

    什么是后台主机 在之前的 Asp.NETCore 轻松学系列中,曾经介绍过一个轻量级服务主机 IHostedService ,利用 IHostedService 可以轻松的实现一个系统级别的后台服务, ...

  7. 补习系列(18)-springboot H2 迷你数据库

    目录 关于 H2 一.H2 用作本地数据库 1. 引入依赖: 2. 配置文件 3. 样例数据 二.H2 用于单元测试 1. 依赖包 2. 测试配置 3. 测试代码 小结 关于 H2 H2 数据库是一个 ...

  8. windows下,读取快捷方式lnk所指向的路径

    BOOL GetLnkFileName( OUT PWSTR pLnkName, OUT PWSTR OepnFileNameBuufer, IN DWORD OpenFileNameBufferSi ...

  9. Quartz.Net学习笔记

    一.概述 Quartz.NET是一个强大.开源.轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp.net应用中.它灵 ...

  10. 让 .NET 更方便的导入导出 Excel

    让 .Net 更方便的导入导出Excel Intro 因为前一段时间需要处理一些 excel 数据,主要是导入/导出操作,将 Excel 数据转化为对象再用程序进行处理和分析,没有找到比较满意的库,于 ...