参考文章:https://blog.csdn.net/qq_41011894/article/details/123406711
https://issues.sonatype.org/,未登录情况下直接会有登录输入框,无账号时点击sign up进入注册页面邮箱很重要!后续验证时频繁使用;账号和密码为登录使用;全名可以随意输入。

sonatype账号后登录,直接点击标题栏的新建按钮,默认选中的新建项目,如下两图:

*的必填项,其中Group Id、Project URL、SCM url需要注意:
Group Id:github项目可以使用io.github.[username]其中[username]为替换为自己github的用户名,比如我的github用户名是DingDangDog,我则填写io.github.dingdangdog。可以自定义其他名称,详细可阅读官方文档:https://central.sonatype.org/publish/requirements/coordinates/Project URL:github项目地址,如:https://github.com/DingDangDog/db-initSCM url:github项目代码下载地址,如:https://github.com/DingDangDog/db-init.git信息填写无误后,网站审核员会回复你一个邮件,在网站问题页面也会有相同的回复内容。 简单来说,就是需要在你的
github上创建一个指定的仓库,来确认该github帐号是你本人的。

OSSRH-80997的仓库。Group ID填写的不是io.github.dingdangdog,管理员让你修改后,将该问题的状态改为open。按照第一次审核回复的信息,操作完成后,问题的状态改为Open,等待二次确认,如果确认成功,会收到邮件和回复,回复信息如下。

https://central.sonatype.org/publish/publish-guide/#deployment下载地址:
https://www.gpg4win.org/download.html
windows会自带可视化工具Kleopatra,后续操作会相对简单。Kleopatra,点击文件 > 新建密钥对,弹出如下创建向导
使用密码句保护生成的密钥,选中后,导出密钥等操作需要输入密码确认,更加安全些。RSA,我刚开始使用默认的算法,总是不成功,参考了文章才解决:https://www.e-learn.cn/topic/1343735。
 

服务器上查找...,输入名称可以查到已上传的密钥。

CMD运行即可),重新上传了密钥。shell# 将公钥发布到GPG密钥服务器
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 公钥ID
# 查询是否已将公钥发布到服务器
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --recv-keys 公钥ID
公钥ID,我使用的是上图打码的密钥ID,通过在密钥上 右键 - 细节 - 导出,可以看到如下弹窗,复制指纹后16位即可。


上述密钥操作成功后,需要到项目中配置相关脚本,并将密钥、maven帐号等相关信息配置好。下面直接贴出我的配置
gradle.properties的文件,内容如下,注意填写自己的信息。shellsonatypeUsername= # 最开始注册测sonatype帐号 sonatypePassword= # sonatype密码 signing.keyId= # 密钥ID(指纹)后8位 signing.password= # 密钥保护密码 signing.secretKeyRingFile=E:/**/secring.gpg # 创建密钥最后一步生成的gpg文件目录
kotlinjar.enabled=true
apply plugin: 'maven-publish'
apply plugin: 'signing'
group 'io.github.dingdangdog'
version '1.0'
task sourcesJar(type: Jar) {
    from sourceSets.main.allJava
    archiveClassifier = 'sources'
}
task javadocJar(type: Jar) {
    from javadoc
    classifier = 'javadoc'
}
sourceSets.main.resources.srcDirs = ["src/main/java","src/main/resources"]
dependencies {
    compile 'org.springframework.boot:spring-boot-starter-aop',
            'org.springframework.boot:spring-boot-configuration-processor',
            'org.apache.httpcomponents:httpclient:4.5.8',
            'org.apache.httpcomponents:httpmime:4.3.1',
            'io.jsonwebtoken:jjwt:0.7.0',
            'com.itranswarp:compiler:1.0'
}
publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId project.group
            artifactId project.name
            version project.version
            //若是war包,就写components.web,若是jar包,就写components.java
            from components.java
//                artifact shadowJar
            artifact sourcesJar
            artifact javadocJar
            pom {
                // 构件名称
                // 区别于artifactId,可以理解为artifactName
                name = 'db-init'
                // 构件描述
                description = 'springboot数据库初始化插件'
                // 构件主页
                url = 'https://github.com/DingDangDog/db-init'
                // 许可证名称和地址
                licenses {
                    license {
                        name = 'MIT License'
                        url = 'https://mit-license.org/'
                    }
                }
                // 开发者信息
                developers {
                    developer {
                        name = 'DingDangDog'
                        email = '****@qq.com'
                    }
                }
                // 版本控制仓库地址
                scm {
                    url = 'https://github.com/DingDangDog/db-init'
                    connection = 'scm:git:https://github.com/DingDangDog/db-init.git'
                    developerConnection = 'scm:git:https://github.com/DingDangDog/db-init.git'
                }
            }
        }
    }
    // 定义发布到哪里
    repositories {
        maven {
            name 'db-init'
//                url "https://oss.sonatype.org/service/local/staging/deploy/maven2"
            url "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
            credentials {
                // 这里就是之前在issues.sonatype.org注册的账号
                username = "${sonatypeUsername}"
                password = "${sonatypePassword}"
            }
        }
    }
}
signing {
    sign publishing.publications.mavenJava
}
javadoc {
    // <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    // 防止本地打开中文乱码
//        options.addStringOption("charset", "UTF-8")
    options.encoding = "UTF-8"
    failOnError = false
}

publish即可自动发布。发布成功后,出现如下信息
sonatype帐号登录。https://s01.oss.sonatype.org/#welcomeStaging Repostories - 勾选项目 - close。成功后状态Activity会改变为Operation in progress正在运行,其实他正在检测你发布的程序。
close后,他会运行一段时间,验证你发布的项目是否符合规范,不符合规范会报错,如下图,我第一次发布时报的错。

javadoc相关的脚本给注释掉了,没有发布javadoc相关信息,当时publish是成功了,但是到这一步又出现问题了,所以还是不能偷懒啊。。。(PS:因为发布`javadoc`会校验你的注释是否规范,不规范的情况下会报很多错,我就想着不发布`javadoc`试试,还真的发布成功了)Close报错全部解决后,重新运行上传脚本publish,然后重新Close,如果还报错,就重复以上步骤,直到Close成功后,Release亮起!Release

但是此时可能还无法立即根据坐标引用自己的依赖,据说需要过10分钟左右才能真正发布到中央仓库。
写这篇文章时,我也是第一次发布项目,边写边走流程,如果有写的不对或不好的地方,欢迎批评指正。
建站因为热爱,生活需要Money,请屏幕前的大佬动动您发财的小手,点击一次以示鼓励,祝您生活愉快!
PS:就目前的访问量,即便每个访客都点一次广告,收入也不足以支付运营成本。
如果看不到广告,可能是网络原因或被拦截了,那就算了吧。再次祝您生活愉快~~
本文作者:DingDangDog
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!