2024.06使用gradle上传自定义依赖到maven中央仓库

本文主要用到的插件是sonatype-uploader, 该插件主要功能是上传依赖文件夹到中央仓库。

该文件夹的生成也十分简单,不用担心。

前言

最近在研究maven插件的时候发现发布的网站发生了变化,使用之前的一些插件没能满足我发布依赖的需求,也可能我的使用方法不对。于是有了今天的这个插件方案。

官网在这里,可以自己研究,也可以跟着博主一步步来。
github: https://github.com/jeadyx/SonatypeUploader
gitee: https://gitee.com/jeadyx/SonatypeUploader

一、先上代码

// build.gradle.kts
plugins{
    `maven-publish` // 用于生成大md5,sha等文件
    signing // 用于生成签名文件
    id("io.github.jeadyx.sonatype-uploader") version "1.0" // 用于上传生成好的文件夹
}

group = "io.github.jeady5"
version = "1.0"

java { // 配置生成javadoc,sources
    withJavadocJar()
    withSourcesJar()
}

publishing { // 配置发布信息,改成适合自己的
    publications {
        create<MavenPublication>("mavenTest") {
            artifactId = "test-library"
            from(components["java"])
            pom {
                name = "My Library"
                description = "A concise description of my library greennbg"
                url = "http://www.example111.com/library"
                properties = mapOf(
                    "myProp" to "value",
                    "prop.with.dots" to "anotherValue"
                )
                licenses {
                    license {
                        name = "The Apache License, Version 2.0"
                        url = "http://www.apache.org/licenses/LICENSE-2.0.txt"
                    }
                }
                developers {
                    developer {
                        id = "jeady"
                        name = "jeady"
                        email = "jeady5@163.com"
                    }
                }
                scm {
                    connection = "scm:git:git://example.com/my-library.git"
                    developerConnection = "scm:git:ssh://example.com/my-library.git"
                    url = "http://example.com/my-library/"
                }
            }
        }
    }
    repositories {
        maven {
            name = "project"
            url = uri(layout.buildDirectory.dir("repo")) // 将要发布的文件夹生成到这个目录
        }
    }
}

signing{ // 文件签名
    sign(publishing.publications["mavenJava"])
}

sonatypeUploader {
    dir = layout.buildDirectory.dir("repo/io").get().asFile.path
    tokenName = "your_token_user"
    tokenPasswd = "your_token_password"
}

二、文件夹准备

根据readme提示,通过maven-publishsinging插件生成预发布目录.

  1. maven-publish插件生成依赖目录结构及md5、sha文件
    配置好上面的发布信息后,执行sync,如果没有报错,则执行publishMavenTestPublicationToProjectRepository任务
    如果没报错,就可以在build文件夹中看到目录结构了

  2. signing 插件生成签名文件
    除了添加signing插件块外,还需要在gradle.properties文件中添加签名信息
    该信息可由gpg工具生成。

signing.keyId=3F9FFF22
signing.password=1234
signing.secretKeyRingFile=E\:\\gpg\\jeady_0x3F9FFF22_SECRET.gpg

配置完成后,再次执行publishMavenTestPublicationToProjectRepository任务,如果没有error,则可以看到asc文件

至此maven目录准备完成

  1. 账号注册与tokenuser、tokenpasswd获取
    推荐使用github登录,不需要再添加dns txt记录就可以得到一个命名空间。
    如果你有自己的域名,按照官网引导,一步步进行dns记录验证即可。

登录后的主页右上角,点击查看账户
生成用户token
继续生成,之前生成的token将失效
把得到的用户名密码填写到sonatypeUploader配置块,或者使用文件gradle.properties进行保存

配置完成后就可以执行发布了,依次执行即可。


image.png

四、常见问题

  • 上传时提示401就是你的token不对,检查/重新生成UserToken
  • 在上传后并没有完成发布,需要执行publish才能完成发布
  • 在发布前需要检查上传的文件状态,只要配置没啥问题,一般没事
  • 发布前需要状态为 VALIDATED, 否则无法正常发布
  • 发布成功后将无法删除和撤销
  • 如果发生错误,可以在publishing查看错误信息
  • 保证group配置项和经过验证的nameSpace保持一致
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容