详细介绍如何发布到Maven中央仓库

注册账户

https://issues.sonatype.org

发布问题(创建新的工程)

https://issues.sonatype.org/secure/CreateIssue.jspa?issuetype=21&pid=10134

cg6kfe.png

摘要:项目名称

Group Id:组名 这里要用自己的域名的话一定要保证有域名的所有权,后面会让你添加dns记录来验证

Project URL仓库地址 SCM URL git地址

之后创建

等待回复 会让你添加DNS记录

cg6gn1.png

cgcFH0.png

添加后回复,这个地址要使用这个工具才能访问,直接执行命令后面跟着地址就行

cg6Tcd.png

等待回复之后就能上传了,他说上传之后回复

cgcNgH.png

这里我使用Gradle

加上这2个插件

plugins {
    id 'maven-publish'
    id 'signing'
}

doc 和 source

java {
    withJavadocJar()
    withSourcesJar()
}

发布配置

配置后先别刷新

publishing {
    //配置仓库
    repositories {
        //本地仓库
        def ENV = System.getenv()
        if (ENV.MAVEN_URL) {
            maven {
                url ENV.MAVEN_URL
            }
        }

        //远程仓库
        maven {
            url "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
            credentials {
                username ossrhUsername
                password ossrhPassword
            }
        }
    }

    publications {

        
        mavenJava(MavenPublication) {
            groupId project.group
            artifactId project.name
            version project.version

            from components.java

            //pom其他信息 这个必须加上不然等会发布验证不会通过
            pom {
                name = 'accessor'//项目名
                description = 'Bytecode framework for java, Invoke private field and method'//描述
                url = 'https://github.com/Enaium/accessor/'//地址

                //协议
                licenses {
                    license {
                        name = 'The Apache License, Version 2.0'
                        url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }

                //开发者信息
                developers {
                    developer {
                        id = 'enaium'
                        name = 'Enaium'
                        email = 'Enaium@outlook.com'
                    }
                }


                //git地址
                scm {
                    connection = 'scm:git:https://github.com/Enaium/accessor.git'
                    developerConnection = 'scm:git:https://github.com/Enaium/accessor.git'
                    url = 'https://github.com/Enaium/accessor/'
                }
            }
        }
    }
}

//签名 这个放到最后
signing {
    sign publishing.publications.mavenJava
}

在用户根目录的.gradle里配置gradle.properties

signing.keyId=id
signing.password=密码
signing.secretKeyRingFile=文件路径.gpg
ossrhUsername=账户名
ossrhPassword=密码

下载工具

GPG

GPG for Win

打开 kleopatra

创建

cggLY8.png

cggzOs.png

之后填上名字和邮箱

cg2Qk6.png

配置的ID填上后8位

导出

cg2YXd.png

加密导出

cgRlbn.png

cgRWKH.png

设置密码

管理员运行命令

gpg --export-secret-keys -o 文件路径.gpg

上传到服务器

gpg --keyserver https://keys.openpgp.org --send-keys --send-keys 8位ID

好了 刷新Gradle

发布

cgolSP.png

在那个问题回复已经上传

cgoTmD.png

回复之后就访问

https://s01.oss.sonatype.org/#stagingRepositories

输入账户密码登录

选中一个仓库groud_id-xxxx,点上方的Close

cgT891.png

如果成功的话再点,Close右边的release就行了

如果失败了的话点Activity产看信息

cgTaHe.png

过一会收到信息

cgT7vV.png

之后可以再 https://search.maven.org/ 搜索到包

如果升级版本或者在发布另一个仓库就不需要在创建问题了,直接上传就行,前提是group id不变

上传到Maven中央仓库是不是很麻烦