前言
maven*仓库于2024年3月进行改版,下面介绍新的推送方式
一、将项目推送到github
过程略
二、注册sonatype账号
仓库地址:https://central.sonatype.com/
这里选择使用github账号登录,不注册新的了
三、创建命名空间
这里会自动校验通过了一个github子域名,可以直接使用,就不用创建了
如需创建自己新的命名空间,需要有真实域名,并需要做验证,过程较繁琐。
四、创建token
拷贝生成的两串,待用
五、GPG生成秘钥
下载gpg生成工具,这里使用windows版
下载地址:https://www.gpg4win.org/get-gpg4win.html
安装完成后生成秘钥
1、生成key
gpg --gen-key
填写Real name(姓名)和Email Address(邮箱,最好用真实的,可用于密钥找回)
输入"O"回车,弹出弹窗,填写密码口令(自定义,后面会用到)两次,然后点击OK,密匙就创建好了
此处生成公钥:0773652F9BFCE458892BDCB38C0EC18E42A31653
这个公钥的后八位就是后面配置中的的signing.keyId(注意是后八位,这里也就是42A31653)
生成时设置的密码为后面配置中的signing.password
2、发布公钥
gpg --keyserver keyserver.ubuntu.com --send-keys 0773652F9BFCE458892BDCB38C0EC18E42A31653
如果出现发送失败的情况,可以选择其他服务器多次重试,总会成功的
*服务器支持的GPG密钥服务器有:
keyserver.ubuntu.com
keys.openpgp.org
pgp.mit.edu
验证公钥是否上传成功
gpg --keyserver keyserver.ubuntu.com --recv-keys 0773652F9BFCE458892BDCB38C0EC18E42A31653
3、导出key
gpg --export-secret-key 0773652F9BFCE458892BDCB38C0EC18E42A31653 > secret.gpg
过程中弹出密码输入框,输入创建时设置的密码
这里生成的secret.gpg文件就是后面配置中的signing.secretKeyRingFile
六、在项目的build.gradle中配置
如果使用build.gradle.kts可自行转换一些语法
可参考的的项目配置:https://github.com/iscasDmo/data-middle-office-sdk
引入插件sonatype-uploader
dependencies {
classpath group: 'io.github.jeadyx.sonatype-uploader', name: 'io.github.jeadyx.sonatype-uploader.gradle.plugin', version: '2.8'
}
应用插件maven-publish、signing、sonatype-uploader
apply plugin: 'maven-publish'
apply plugin: 'signing'
apply plugin: 'io.github.jeadyx.sonatype-uploader'
group使用上面验证的域名
group = 'io.github.iscasdmo'
配置publishing
publishing {
publications {
mavenJava(MavenPublication) {
groupId project.group
artifactId project.name
version project.version
//若是war包,就写components.web,若是jar包,就写components.java
from components.java
pom {
// 构件名称
// 区别于artifactId,可以理解为artifactName
name = 'data-middle-office-sdk'
// 构件描述
description = '数据中台sdk'
// 构件主页
url = 'https://github.com/iscasDmo/data-middle-office-sdk'
// 许可证名称和地址
licenses {
license {
name = 'The Apache License, Version 2.0'
url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
}
}
// 开发者信息
developers {
developer {
id = 'iscas'
name = 'iscas'
email = '461402005@qq.com'
}
}
// 版本控制仓库地址
scm {
url = 'https://github.com/iscasDmo/data-middle-office-sdk'
connection = 'scm:git:https://github.com/iscasDmo/data-middle-office-sdk.git'
developerConnection = 'scm:git:https://github.com/iscasDmo/data-middle-office-sdk.git'
}
}
}
}
// 定义发布到哪里
repositories {
maven {
url = layout.buildDirectory.dir('repo')
}
}
}
修改其中的name、description、developsers、scm相关配置,其中url为github中项目地址;connection和developerConnection也对应github中项目git地址,前面多了scm:git:。
配置签名
signing {
sign publishing.publications.mavenJava
}
在项目根目录gradle.properties中添加配置,值为GPG生成的
signing.keyId=ABC2E7F0
signing.password=Isc@s12345678
signing.secretKeyRingFile=C:/Users/admin/secret.gpg
配置sonatype-uploader
sonatypeUploader {
repositoryPath = layout.buildDirectory.dir("repo").get().asFile.path
tokenName = "${tokenUsername}"
tokenPasswd = "${tokenPassword}"
signing = {
it.keyId="${signing.keyId}"
it.keyPasswd="${signing.password}"
it.secretKeyPath="${signing.secretKeyRingFile}"
}
pom = {
it.name = "data-middle-office-sdk"
it.description = "数据中台sdk"
it.url = "https://github.com/iscasDmo/data-middle-office-sdk"
it.licenses {
license {
name = "The Apache License, Version 2.0"
url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
}
}
it.developers {
developer {
id = "iscas"
name = "iscas"
email = "461402005@qq.com"
}
}
it.scm {
connection = "scm:git:https://github.com/iscasDmo/data-middle-office-sdk.git"
developerConnection = "scm:git:https://github.com/iscasDmo/data-middle-office-sdk.git"
url = "https://github.com/iscasDmo/data-middle-office-sdk"
}
}
}
其中tokenName和tokenPassword使用前面生成的。
完整配置参考:https://github.com/iscasDmo/data-middle-office-sdk
七、发布
先执行publishing,再执行publishToSonatype
去*仓库查看
刚推送时这里显示publishing,等待一段时间(少则几分钟,多则一两天),变成published,就可以使用maven/gradle坐标引用了。
在搜索栏搜索
点进去查看引用坐标