从Gradle自动将工件提升到Maven Central
快速教程,無(wú)需在帶有Gradle Nexus Staging插件的Nexus GUI中單擊即可將Gradle項(xiàng)目中的工件提升/發(fā)布到Maven Central。
介紹
Maven Central (又名“中央存儲(chǔ)庫(kù)”)(可能)是世界上最大的一組開(kāi)源工件,這些工件被基于Java和JVM的項(xiàng)目使用。 它是由Apache Maven的創(chuàng)建者創(chuàng)建的,自2002年以來(lái)一直為工件提供服務(wù)。如今,有一些替代方法(在下面列出),但是對(duì)于許多用戶而言,Maven Central仍然是項(xiàng)目依賴項(xiàng)的主要來(lái)源(有時(shí)是唯一被列入白名單的項(xiàng)目)。公司)。
問(wèn)題
要執(zhí)行發(fā)布到中央存儲(chǔ)庫(kù)的操作,Maven用戶可以使用Nexus Staging Maven插件 -免費(fèi)但不是完全開(kāi)源的插件。 但是使用Gradle時(shí),需要登錄Nexus GUI并手動(dòng)調(diào)用兩個(gè)操作(關(guān)閉存儲(chǔ)庫(kù)和發(fā)布/升級(jí)存儲(chǔ)庫(kù))。 連續(xù)交付方法非常無(wú)聊,而且存在很大問(wèn)題。 幸運(yùn)的是Nexus公開(kāi)了REST API,通過(guò)做一些工作就可以做到這一點(diǎn)。 Gradle Nexus Staging插件應(yīng)運(yùn)而生。
快速開(kāi)始
重要的 。 請(qǐng)注意,先決條件是在Sonatype OSSRH(OSS存儲(chǔ)庫(kù)托管)中具有活動(dòng)帳戶并已配置該帳戶,并且Gradle項(xiàng)目配置為將發(fā)布工件發(fā)布到登臺(tái)存儲(chǔ)庫(kù)中。 如果還沒(méi)有的話,請(qǐng)遵循官方指南中 Gradle的單獨(dú)章節(jié) 。
要在項(xiàng)目中設(shè)置自動(dòng)發(fā)布/促銷,請(qǐng)將gradle-nexus-staging-plugin添加到根項(xiàng)目的build.gradle文件中的buildscript依賴項(xiàng)中:
buildscript {repositories {mavenCentral()}dependencies {classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.5.1"} }應(yīng)用插件:
apply plugin: 'io.codearte.nexus-staging'配置它:
nexusStaging {packageGroup = "org.mycompany.myproject"stagingProfileId = "yourStagingProfileId" //when not defined will be got from server using "packageGroup" }在成功將檔案上傳(使用maven , maven-publish或nexus插件)后,調(diào)用Sonatype OSSRH:
./gradlew closeRepository promoteRepository關(guān)閉登臺(tái)存儲(chǔ)庫(kù)并升級(jí)/發(fā)布它及其工件。 如果啟用了與Maven Central的同步,則工件應(yīng)在幾分鐘內(nèi)自動(dòng)出現(xiàn)在Maven Central中。
細(xì)節(jié)
該插件提供了兩個(gè)主要任務(wù):
- closeRepository –使用上載的工件關(guān)閉打開(kāi)的存儲(chǔ)庫(kù)。 暫存配置文件中應(yīng)該只有一個(gè)開(kāi)放的存儲(chǔ)庫(kù)(可以使用Nexus GUI刪除可能的舊/損壞的存儲(chǔ)庫(kù))
- promoteRepository – promoteRepository /發(fā)布封閉的存儲(chǔ)庫(kù)(需要將工件放到Maven Central中)
還有一個(gè):
- getStagingProfile –獲取并顯示給定軟件包組的暫存配置文件ID。 這是一個(gè)獲取值并將其作為stagingProfileId放入配置閉包的診斷任務(wù)。 要查看結(jié)果,需要使用--info開(kāi)關(guān)調(diào)用gradle。
必須提到的是,調(diào)用Nexus REST API會(huì)立即結(jié)束,但是關(guān)閉操作會(huì)花費(fèi)一些時(shí)間,因此,可以使用內(nèi)置的重試機(jī)制一起調(diào)用closeRepository promoteRepository 。
該插件“與上傳機(jī)制無(wú)關(guān)”,可以與maven , maven-plugin或nexus插件一起使用。
有關(guān)更多詳細(xì)信息和配置參數(shù),請(qǐng)參閱項(xiàng)目網(wǎng)頁(yè)或插件自己的發(fā)行版配置中的工作示例。
Maven Central的替代品?
它是更年輕,但很有前途的替代品-Bintray ,它也可以用來(lái)處理文物。 它對(duì)開(kāi)源項(xiàng)目是免費(fèi)的,我個(gè)人曾將其用于其他項(xiàng)目 ,甚至為Bintray,Travis和Gradle創(chuàng)建了自動(dòng)發(fā)布機(jī)制 。 它可以正常工作,但要將工件也放到Maven Central中,則需要在服務(wù)器上存儲(chǔ)用于唱歌的私鑰,并提供Nexus憑據(jù)。 這增加了它們被盜的風(fēng)險(xiǎn),在Codearte中,我們更喜歡使用私有Jenkins實(shí)例直接將其發(fā)布到Maven Central。
摘要
借助Gradle Nexus暫存插件 ,可以使用Gradle從命令行執(zhí)行向Maven Central的整個(gè)發(fā)布過(guò)程,并且可以通過(guò)CI服務(wù)器完全自動(dòng)執(zhí)行一些其他工作。 沒(méi)有更多按鈕可推送Nexus GUI。 除了Sonatype OSSRH之外,該插件還可以與具有啟用的登臺(tái)存儲(chǔ)庫(kù)的私有Nexus實(shí)例一起使用。
順便說(shuō)一句,插件中可能有很多可以增強(qiáng)的地方。 如果您需要某些東西或發(fā)現(xiàn)了錯(cuò)誤,請(qǐng)隨時(shí)使用問(wèn)題跟蹤器進(jìn)行報(bào)告。
感謝KubaKubryński的動(dòng)機(jī)和幫助,他們分析了記錄不充分的Nexus REST API。
翻譯自: https://www.javacodegeeks.com/2015/03/automatic-promotion-of-artifacts-to-maven-central-from-gradle.html
總結(jié)
以上是生活随笔為你收集整理的从Gradle自动将工件提升到Maven Central的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 火影战记电脑破解版(火影战记破解版下载最
- 下一篇: 虚拟家庭2电脑下载(虚拟家庭2在线下载)