使用Gradle – 2019版从Travis可靠发布到Maven Central
得益于在2018年和2019年末實(shí)現(xiàn)的顯式登臺(tái)存儲(chǔ)庫創(chuàng)建功能集,使您(自動(dòng))從Travis(不僅是)發(fā)布到Maven Central更加可靠。
背景
如果您僅想獲取信息,如何使您的工件從Travis發(fā)布更可靠,請(qǐng)前進(jìn)到另一部分。
從Gradle到Maven Central的自動(dòng)工件發(fā)布(使用暫存庫及其升級(jí))一直很棘手。 與這些操作相關(guān)的Nexus REST API的文檔非常少。 另外,即使已經(jīng)顯式創(chuàng)建了Gradle,它本身也不支持將工件上傳到專用的暫存庫。 結(jié)果,必須使用啟發(fā)式方法來確定哪個(gè)存儲(chǔ)庫僅包含上載的工件,這帶來了一些嚴(yán)重的局限性。 問題的根源是Travis在2018年秋末將其架構(gòu)更改為更加無狀態(tài)。這導(dǎo)致對(duì)特定工件的上載請(qǐng)求通過具有不同 IP地址的機(jī)器進(jìn)行路由,從而導(dǎo)致為單個(gè)數(shù)據(jù)庫創(chuàng)建多個(gè)陳述式存儲(chǔ)庫gradle uploadArchives或gradle publish調(diào)用。 這使得Travis的Gradle自動(dòng)釋放偽像的工作徹底中斷了。 直至現(xiàn)在。
改進(jìn)措施
年末發(fā)生了兩件事。 首先是Marc Philipp 發(fā)布的新的nexus-publish插件。 它使用Nexus API創(chuàng)建了一個(gè)明確的登臺(tái)存儲(chǔ)庫,并增強(qiáng)了Gradle發(fā)布任務(wù)以使用該存儲(chǔ)庫。 第二件事是對(duì)我的gradle-nexus-staging插件進(jìn)行了增強(qiáng),該插件開始允許設(shè)置發(fā)布操作期間應(yīng)使用的登臺(tái)存儲(chǔ)庫ID。 從而提高了使用Gradle發(fā)布到Maven Central的可靠性。
無需依靠啟發(fā)式方法確定應(yīng)使用哪個(gè)存儲(chǔ)庫進(jìn)行發(fā)布,而是顯式創(chuàng)建了新的登臺(tái)存儲(chǔ)庫。 工件直接上傳到它,它已關(guān)閉并釋放。 因此,一切都變得更加流暢,并且更加防錯(cuò)。 此外,并行發(fā)布屬于同一暫存配置文件的不同項(xiàng)目沒有問題,并且最終可以與Travis再次正常使用。
組態(tài)
這篇文章假設(shè)您已經(jīng)配置了使用maven-publish插件將工件上傳到Maven Central(又名The Central Repository)。 如果沒有,您可以查閱此鏈接 。 此配置將使您的部署和發(fā)布更加可靠,而無需在Nexus UI中進(jìn)行任何手動(dòng)操作。
plugins { ... //other plugins used in your project id 'io.codearte.nexus-staging' version '0.20.0' id 'de.marcphilipp.nexus-publish' version '0.2.0' } publishing { ... //your current publishing to Maven Central configuration } //optionally nexusStaging { packageGroup = "your-package-group-if-different-than-groupId" } //optionally nexusPublishing { //for custom configuration if needed - credentials are by default taken from nexus-staging }您期望編寫更多代碼(配置)嗎? 一切都隱藏在相互利用的插件中。 請(qǐng)記住使用nexus-staging 0.20.0+和nexus-publish 0.2.0+。
之后,發(fā)布和發(fā)布工件就只需一個(gè)命令:
. /gradlew publishToNexus closeAndReleaseRepository不是publish ,而是使用publishToNexus任務(wù),該任務(wù)用于設(shè)置登臺(tái)存儲(chǔ)庫ID和closeAndReleaseRepository ,用于關(guān)閉和釋放該特定存儲(chǔ)庫。 幾分鐘后,您的工件應(yīng)在Maven Central中可用。
重要的 。 請(qǐng)記住,必須在一個(gè)Gradle執(zhí)行中使用publishToNexus和closeAndReleaseRepository才能利用顯式創(chuàng)建的登臺(tái)存儲(chǔ)庫。
摘要
Gradle是一個(gè)非常不錯(cuò)的構(gòu)建工具,(幾乎)天空是極限。 不幸的是,仍然存在一些長(zhǎng)期存在的問題,需要使用一些技巧或編寫自定義插件來克服它們。 有希望的是,隨著每個(gè)發(fā)行版的發(fā)布,它們都將被緩慢地修復(fù)/ 實(shí)施 。 為了解決該特定問題,需要進(jìn)行自下而上的工作以將Travis的釋放恢復(fù)正常,并且更可靠。
請(qǐng)注意 。 提出的方法非常適合使用(最近改進(jìn)的)發(fā)布插件。 如果您仍然使用舊的maven插件(具有uploadArchives任務(wù)而不是publish任務(wù)),則需要遷移和/或在相應(yīng)的問題中添加評(píng)論。
翻譯自: https://www.javacodegeeks.com/2019/02/releasing-maven-central-travis-gradle.html
總結(jié)
以上是生活随笔為你收集整理的使用Gradle – 2019版从Travis可靠发布到Maven Central的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工业电脑主板的图解及功能图(工业电脑主板
- 下一篇: adf可以自定义溶剂吗_ADF Face