当前位置: 首页 > 后端技术 > Java

Gradle发布Java类库到Maven中央仓库

时间:2023-04-01 20:20:27 Java

废话不多说,先说几个网址:SonatypeGradleGitHub这篇文章从零开始,使用Gradle7发布Java类库到Maven中央仓库,使用GitHubAction实现release发布时自动推送。注册sonatype就不用说了,直接打开https://issues.sonatype.org/注册账号发issue注册后登录Sonatype,发issue总结:随便填就行,反正我填写项目名称。GroupId:填写类库的GroupId。注意,如果是独立域名,对方会要求验证域名的归属(验证TXT记录),对方收到Issue后会提醒您添加。项目网址:填写项目网址或GitHub地址。SCMurl:如果项目放在GitHub上,就这样填写GitHub地址加.git提交,慢慢等回复(如下图,不到半小时!)就可以了看下面无用的回复:修改build.gradle配置文件注1:我用的Gradle版本是最新的7.1.1,其他版本请自行尝试。注2:我的Gradle配置文件是Groovy版本,请自行转换KotlinDSL版本。首先在plugins,plugins{id'maven-publish'id'signing'}中添加maven-publish和signing插件,然后在配置文件末尾添加如下内容:java{withJavadocJar()withSourcesJar()}javadoc{options.addStringOption("charset","UTF-8")if(JavaVersion.current().isJava9Compatible()){options.addBooleanOption('html5',true)}}publishing{publications{mavenJava(MavenPublication){artifactId='componentname'fromcomponents.javapom{name='projectname'description='projectdescription'url='projectURL'licenses{license{name='licensename'url='licenseaddress'}}developers{developer{id='开发者ID'name='开发者姓名'email='开发者邮箱'}}scm{connection='scm:git:git://github.com/path/to/repo.git'developerConnection='scm:git:ssh://github.com/path/to/repo.git'url='https://github.com/path/to/repo'}}}}repositories{maven{name="OSSRH"if(project.version.toString().endsWith("-SNAPSHOT")){url="https://s01.oss.sonatype.org/content/repositories/snapshots"}else{url="https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/"}credentials{username=findProperty("ossrhUsername")?:System.getenv("OSSRH_USERNAME")密码=findProperty("ossrhPassword")内容是:GenerateJavadocJarGenerateSourcesJarSetJavadoctoUTF-8encoding签署发布者的设置创建密钥对于Windows系统,可以使用Chocolatey或Scoop来安装gpg4win。对于macOS系统,可以通过Homebrew安装gpg4win。brewinstallgpg对于Linux系统,可以通过包管理工具安装gnupg工具sudoaptinstallgnupg#Debian系统sudoyuminstallgnupg#RedHat系统可以通过gpg安装--generate-key创建密钥,注意记住设置密码已创建,输入gpg-k查看生成的密钥,会看到如下内容:pubrsa30722021-07-25[SC][expires:2023-07-25]A36DDCA2B4E3D244AA685BC6C2F673BC0FEB0227uid[ultimate]TestTestsubrsa30722021-07-25[E][expires:2023-07-25]现在确定几个名词,本文后面会用到:A36DDCA2B4E3D264CA2Keyfingerprintkeyfingerprint(0FEB0227)的后8位都是KEYID现在exportKeyRingFilegpg--export-secret-keys[keyfingerprint]>secret.gpg把[keyfingerprint]换成你的实际值,他会在当前目录下生成一个secret.gpg文件,留着以后用.现在对secret.gpg进行BASE64处理,Windows系统推荐在GitBash中执行:base64secret.gpg>secret.gpg.base64现在将公钥上传到公钥服务器(Sonatype会在多个服务器上查找公钥,例如keys.gnupg.net,pool.sks-keyservers.net,keyserver.ubuntu.com),如果一台服务器上传失败,可以尝试另外两台。gpg--keyserverkeyserver.ubuntu.com--send-keys[密匙指令]「最后一步」GitHubAction!先创建如下文件,文件名随意name:PublishpackagetotheMavenCentralRepositoryon:release:types:[created]jobs:publish:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v2-name:SetupJDK11uses:actions/setup-java@v2with:java-version:"11"分布:"采用"-名称:授予gradlew运行的执行权限:chmod+xgradlew-名称:使用Gradle构建运行:./gradlewbuild-名称:解码运行:|echo"${{secrets.SIGNING_SECRET_KEY_RING_FILE}}">~/.gradle/secring.gpg.base64base64-d~/.gradle/secring.gpg.base64>~/.gradle/secring.gpg-名称:发布包运行:gradlepublish-Psigning.keyId=${{secrets.SIGNING_KEY_ID}}-Psigning.password=${{secrets.SIGNING_KEY_PASSWORD}}-Psigning.secretKeyRingFile=$(echo~/.gradle/secring.gpg)环境:OSSRH_USERNAME:${{secrets.OSSRH_USERNAME}}OSSRH_PASSWORD:${{secrets.OSSRH_PASSWORD}}创建以下Secrets:其中:OSSRH_USERNAME:你的Sonatype用户名OSSRH_PASSWORD:你的Sonatype密码SIGNING_KEY_ID:上面提到的KEYID,8位SIGNING_KEY_PASSWORD:set私钥密码SIGNING_SECRET_KEY_RING_FILE:secret.gpg.base64中的内容完成。撒花在GitHub上发布release,打开https://s01.oss.sonatype.org/,点击左侧的StagingRepositories,会看到发布的release出现在列表中,确认无误后,可以选择它并单击关闭。如果成功,点击Release,将类库发布到Maven中央仓库。