将Gradle项目上传到Maven仓库
本文最后更新于 235 天前,其中的信息可能已经有所发展或是发生改变。

有时候想要让自己的项目也能快速地分享给别人使用,每次都打包成jar未免有些麻烦,最好的办法就是用Maven仓库来自动管理依赖,只需将你的最新版本上传到Maven仓库,那么所有使用者都能在第一时间更新。

Maven可以很轻松地通过一些配置来上传,但Gradle这边就稍微有一点点麻烦了,不过也不难。

1.准备工作

1.1.注册SonaType

先打开 https://issues.sonatype.org/ 并且创建一个账号,如果有就直接登录

点击导航栏上的Create创建一个新项目

如果你没有项目地址,可以填写和SCM一样的地址。

1.2.生成GPG

首先下载一个秘钥生成器 https://gpg4win.org/thanks-for-download.html

打开控制台,执行gpg –gen-key,按提示输入你的名字和邮箱,可以随意,作为作者信息保存。

之后看到提示 You selected this USER-ID: xxx <xxx@xxx.xxx>,如果要修改则输入N或E,确定信息输入O。

确认好你的信息,下一步会弹出一个窗口,输入两次密码作为秘钥的密码。

看到下面的提示说明秘钥已经生成了

gpg: revocation certificate stored as 'xxx.rev'
public and secret key created and signed.

revocation的路径是撤销秘钥的证书,如果你不再需要这个秘钥则可以撤销。

执行gpg --list-keys查看生成过的所有秘钥。

pub ed25519 2023-08-05 [SC] [expires: 2026-08-04]
0A28B86FA6FEFCAABD8F0C2199640244XXXXXXXX
uid [ultimate] 名称 邮箱
sub cv25519 2023-08-05 [E] [expires: 2026-08-04]

观察一下发现keyId的后八位我已经标记成了X,这八位先记下,一会需要用到。

然后执行gpg --keyserver keyserver.ubuntu.com --send-keys 秘钥8位尾ID 将秘钥上传到服务器

接下来执行gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 秘钥8位尾ID 获取秘钥信息

这里–keyserver后面的参数也可以改成其他相关服务器地址,因为有些可能已经失效。

然后执行gpg --export-secret-key 秘钥8位尾ID 导出秘钥文件

2.配置上传

首先引入一下插件

apply plugin: 'maven-publish'
apply plugin: 'signing'

然后编写一下gradle文件

jar {
    enabled = true
}

task sourcesJar(type: Jar) {
    from sourceSets.main.allSource
    archiveClassifier.set('sources')
    duplicatesStrategy 'exclude'
}

task javaDocJar(type: Jar) {
    from javadoc
    archiveClassifier.set('javadoc')
}

javadoc {
    options.encoding = "UTF-8"
    failOnError = false
}

这里有sourcesJar和javaDocJar两种打包,是因为项目文件上传到Maven仓库后会经过自动检查,通过检查才能正式传入公开的主Maven仓库。

而这里的检查则要求必须有一份源码一份JavaDoc。

那么接下来我们来配置一下”发布到Maven”的相关配置。

publishing {
    publications {
        mavenJar(MavenPublication) {
            artifact sourcesJar
            artifact javaDocJar
            groupId '包名'
            artifactId '项目名'
            version '版本号'
            from components.java
            pom {
                name = "仓库名称"
                description = "仓库描述"
                url = "项目URL"
                // 在这里配置你的开源许可
                licenses {
                    license {
                        name = 'The Apache License, Version 2.0'
                        url = 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                    }
                }
                developers {
                    developer {
                        name = "开发者名称"
                        email = "开发者邮箱"
                    }
                }
                scm {
                    url = "仓库地址"
                    connection = 'scm:git:' + "仓库地址" + '.git'
                    developerConnection = 'scm:git:' + "仓库地址" + '.git'
                }
            }
        }
    }

    signing {
        sign publishing.publications.mavenJar
    }

    repositories {
        maven {
            name "Maven仓库名称 可随意"
            // url "https://s01.oss.sonatype.org/content/repositories/snapshots/"
            // url "https://oss.sonatype.org/service/local/staging/deploy/maven2"
            url "https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"
            credentials {
                username = "SonaType账号"
                password = "SonaType密码"
            }
        }
    }
}

稍微解释一下各参数的作用吧

groupId 填写你的包名或其他的标识,在Maven仓库显示为Organization

artifactId 填写项目的名字,在Maven仓库直接显示为名字。

例如 groupId 为 com.example.test,artifactId 为 class01,那么在maven仓库就是 pkg:maven/com.example.test/class01@1.0.0

紧接着在pom下面的url,可以填写你项目的地址,而pom下scm内的url,可以填写你项目源代码的地址(如Github)

介绍完参数,现在需要完成最后一步,签名。

直接在gradle.properties中添加这三行

signing.keyId=
signing.password=
signing.secretKeyRingFile=

一定要注意大小写,然后正确的填入参数即可,keyId和password是刚才生成的秘钥的8位尾ID和秘钥秘钥,secretKeyRingFile填写秘钥的文件的绝对地址。

这样基本的配置就完成了,引入插件后,来到gradle的tasks中,发现有一个publishing,只需要运行publicAllpublicationsTo***Repository即可。

3.发布到Maven仓库

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

打开上面的链接,用你的Snoatype账号登录。

选中你刚才上传的仓库,点击上面的Close,如果通过了检查,则可以继续单击Release来正式发布到主仓库,一般需要1-4个小时来更新。

未经允许禁止转载本站内容,经允许转载后请严格遵守CC-BY-NC-ND知识共享协议4.0,代码部分则采用GPL v3.0协议
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇