maven Central 上传
一、Sonatype 账号
https://fullstackaction.com/pages/8ad3be
1、注册 Sonatype
2、申请上传权限
Group Id
:如io.github.zrq1060
二、GPG 签名
https://juejin.cn/post/6951209116521988132#heading-3
https://www.jianshu.com/p/1c715203c7c6
1、安装 gpg
2、生成密钥
gpg --full-generate-key
在执行过程会让选择加密方式,我这边使用的是RSA and RSA
,长度输入4096
,过期时间直接回车
代表不过期,然后提示让输入User ID
和一个邮箱
,这里可以使用注册SonaType时候用的用户名和邮箱,当然也可以用其他的。接着最后一步输入O
,注意这里是大写的O不是零,然后回车接着就会提示让输入密码
,输入一次后还会有一次确认输入,这个密码一定要记住后期会用到。
3、生成secretKeyRingFile的文件
切到~/.gnupg/
下再去执行
gpg --export-secret-keys -o secring.gpg
执行以上命令创建文件secring.gpg
,创建过程会让输入上边我们创建密钥过程中输入的密码,验证完密码后会在~/.gnupg
目录生成secring.gpg
文件,这个文件的路径我们后续在生成配置文件的时候也需要。
4、上传公钥
您已经生成了一对密钥—一个私钥和一个公钥。你要把私钥藏起来用它来给你的artifacts
签名。公钥必须上传到服务器上,这样任何人都可以检查它是否属于你,你可以通过以下方式来做(使用你自己的密钥ID!):
gpg --keyserver keyserver.ubuntu.com --send-keys [密钥指纹]
二、Gradle 配置
https://github.com/vanniktech/gradle-maven-publish-plugin
1、build.gradle
progect build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.vanniktech:gradle-maven-publish-plugin:0.15.1'
}
}
library build.gradle
apply plugin: "com.vanniktech.maven.publish"
2、设置属性
在gradle.properties
中添加。
GROUP=com.test.mylibrary
POM_ARTIFACT_ID=mylibrary-runtime
VERSION_NAME=3.0.5
POM_NAME=My Library
POM_DESCRIPTION=A description of what my library does.
POM_INCEPTION_YEAR=2020
POM_URL=https://github.com/username/mylibrary/
POM_LICENCE_NAME=The Apache Software License, Version 2.0
POM_LICENCE_URL=https://www.apache.org/licenses/LICENSE-2.0.txt
POM_LICENCE_DIST=repo
POM_SCM_URL=https://github.com/username/mylibrary/
POM_SCM_CONNECTION=scm:git:git://github.com/username/mylibrary.git
POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/username/mylibrary.git
POM_DEVELOPER_ID=username
POM_DEVELOPER_NAME=User Name
POM_DEVELOPER_URL=https://github.com/username/
GROUP
如io.github.zrq1060
3、上传到哪里
3.1、上传到 s01.oss.sonatype.org
progect build.gradle
allprojects {
plugins.withId("com.vanniktech.maven.publish") {
mavenPublish {
sonatypeHost = "S01"
}
}
}
3.2、配置Sonatype的信息
由于其具有隐私性,所以放到Global Properties
(如:/home/zrq1060/.gradle/gradle.properties)下
mavenCentralUsername=用户名
mavenCentralPassword=密码
4、签名
5、配置签名信息Group Id
:如:io.github.zrq1060
由于其具有隐私性,所以放到Global Properties
(如:/home/zrq1060/.gradle/gradle.properties)下
signing.keyId=秘钥后8位
signing.password=设置的密码
signing.secretKeyRingFile=/home/yourusername/.gnupg/secring.gpg
6、Releasing
# prepare your release by assigning a version (remove the -SNAPSHOT suffix)
./gradlew publish --no-daemon --no-parallel
./gradlew closeAndReleaseRepository
它假设调用 closeAndReleaseRepository
时只有一个临时存储库处于活动状态。如果您有陈旧的临时存储库,则必须通过登录https://oss.sonatype.org(或您的 Nexus 实例)来删除
它们。
四、发布
1、上传
./gradlew publish --no-daemon --no-parallel
或可执行Tasks
下的publishing
/publish
2、关闭并发布
./gradlew closeAndReleaseRepository
或可执行Tasks
下的release
/closeAndReleaseRepository
或可进入https://s01.oss.sonatype.org/#stagingRepositories下进行对应图形化操作
等待一段时间就可以在 https://search.maven.org/ 查询发布结果。