当前位置: 首页 > 科技观察

使用Gradle发布开源项目到MavenCentral

时间:2023-03-13 03:18:52 科技观察

使用过AndroidStudio的同学应该对Gradle强大的构建系统印象深刻。Gradle可以很方便的集成各种开源库,编写自动化脚本来处理任务,它有可能取代Maven。业余时间,我在维护一个开源项目,也收到了几个PR要求发布到MavenCentral供Gradle使用,于是摸索着找了一些文章,终于把项目发布了。大概有5个步骤:在issues.sonatype.org注册账号,申请发布权限,编写Gradle自动发布脚本,下载GPGTools,创建SigningKey,执行Gradle发布脚本,申请激活MavenCentralSync进程。Step1和Step5都需要人工审核,两个工作日(美制时间)内会有回复。1、申请MavenCentral发布权限,将你项目的主要信息放在issue中。GroupId需谨慎填写,申请通过后,您只能发布您GroupId下的项目。创建问题后,等待几天,如果通过,将向您发送一封电子邮件。2.编写Gradle发布脚本感谢ChrisBanes提供的脚本,我稍作修改,制作了自己的版本。https://github.com/SpecialCyCi/AndroidResideMenu/blob/master/maven_push.gradle把上面的脚本放到项目的根目录下,然后到开源库所在的module目录下,添加如下代码build.gradle:applyfrom:'../maven_push.gradle'修改项目根目录下的gradle.properties,添加项目信息:VERSION_NAME=1.6VERSION_CODE=8POM_GROUP_ID=com.specyciPOM_DESCRIPTION=....POM_URL=https://github.com/SpecialCyCi/AndroidResideMenuPOM_SCM_URL=https://github.com/SpecialCyCi/AndroidResideMenuPOM_SCM_CONNECTION=scm:git@github.com:SpecialCyCi/AndroidResideMenu.gitPOM_SCM_DEV_CONNECTION=scm:git@github.com:SpecialCyCi/AndroidResideMenuPOM_SCM_CONNECTION=scm:git@github.com:SpecialCyCi/AndroidResideMenu.gitPOM_SCM_DEV_CONNECTION=scm:git@github.com:SpecialCyCi/AndroidResideMenu.gitPOM_LICENSE=MITLICENSE()pom_licence_url=https/raw.githubuserercontent.com/specialcyci/androidresidemenu/master/master/licensepom_licence_dist=repopom_depopom_depopopom_id=specialcycycycycipom_developer_developer_name=specialleungpom_inpom_inpom_inepom_inpoltoritiemitryear201111111111111111**101111**esideMenuPOM_ARTIFACT_ID=residemenuPOM_PACKAGING=aar3。下载GPGTools,创建SigningKeySigningKey可以看成是作者信息的签名,签名分为公有和私有te,其中公钥上传到keyservers.net进行存储先在本地命令生成签名密钥:?AndroidResideMenugit:(master)gpg--gen-keyPleaseselectwhatkindofkeyyouwant:(1)RSAandRSA(default)(2)DSAandElgamal(3)DSA(signonly)(4)RSA(signonly)Yourselection?1RSAkeysmaybebetween1024and8192bitslong.Whatkeysizedoyouwant?(2048)Requestedkeysizeis2048bitsPleasespecifyhowlongthekeyshouldbevalid.0=keydoesnotexpire=keyexpiresinndaysw=keyexpiresinnweeksm=keyexpiresinnmonthsy=keyexpiresinnyearsKeyisvalidfor?(0)0KeydoesnotexpireatallIsthiscorrect?(y/N)yGnuPGneedstoconstructauserIDtoidentifyyourkey.Realname:SpecialLeung(Testing)Emailaddress:specialcyci+test@gmail.comComment:Thisisjuststatestingkey.YouselectedthisUSER-ID:"SpecialLeung(Testing)(Thisisjustestingkey.)"Change(N)ame,(C)omment,(E)mailor(O)kay/(Q)uit?OYouneedaPassphrasetoprotectyoursecretkey....pub2048R/8C1761A22015-01-24Keyfingerprint=xxxuid[ultimate]SpecialLeung(测试)(Thisisjuststatestingkey.)sub2048R/E32D11862015-01-24并将公钥上传到keyservers.net:$gpg--keyserverhkp://pool.sks-keyservers.net--send-keys8C1761A2gpg:sendingkey8C1761A2tohkpserverpool.sks-keyservers.net***FillSigningKeyinformationinto~/.gradle/gradle.properties:#查看密钥信息?~gpg--list-secret-keys/Users/special/.gnupg/secring.gpg#<-密钥目录--------------------------------sec2048R/8C1761A22015-01-24#<-8C1761A2是keyiduidSpecialLenung(Testing)(Thisisjustestingkey.)ssb2048R/E32D11862015-01-24#~/.gradle/gradle.propertiessigning.keyId=8C1761A2signing.password=passwordsigning.secretKeyRingFile=/Users/special。gnupg/secring.gpgnexusUsername=usernamenexusPassword=password4。执行Gradle发布脚本%GRADLE_HOME%/bin/gradleuploadArchives如果版本名包含SNAPSHOT字符串,项目将上传到snapshots节点;如果要发布到MavenCentral官方库,去掉版本名称中的SNAPSHOT就可以了,SNAPSHOT版本不需要进行第五步CentralSync快照节点:https://oss.sonatype.org/content/repositories/snapshots5。如果第4步激活MavenCentralSync进程成功,可以登录oss.sonatype.org(https://oss.sonatype.org/)的stagingRepositories查看项目,然后按“Close”准备发布项目。成功关闭项目后,到第一个问题地址发评论让工作人员为你启动同步过程。通常,一个工作日内会有回复。工作人员回复yes后,执行“Release”操作。如果不出意外,两个小时后就可以在search.maven.org上搜索到你的项目了。6.结语总的来说,发布还是比较方便的。人工审核可能会浪费一些时间,偶尔也会遇到一些问题,但是sonatype还是很专业的。把你遇到的问题告诉他们之后,你就可以得到他们。一个有效的解决方案。不过最近AndroidStudio把jCentral设为了默认节点,说不定下次又要折腾jCentral了。