摘要:清除構(gòu)建緩存為每一個(gè)服務(wù)的構(gòu)建環(huán)境提供緩存,項(xiàng)目會(huì)對(duì)的安裝目錄,配置目錄,和本地倉(cāng)庫(kù)目錄提供了緩存,用戶通過(guò)以下設(shè)置清理緩存。本文檔詳細(xì)介紹了源碼構(gòu)建項(xiàng)目時(shí)的各種詳細(xì)設(shè)置與操作。
概述
根據(jù)大量的Rainbond用戶反饋,我們發(fā)現(xiàn)在Rainbond源碼構(gòu)建java-maven項(xiàng)目的過(guò)程中,最容易出現(xiàn)問(wèn)題的一環(huán)就是獲取構(gòu)件失敗。
比如:
[ERROR] Failed to execute goal on project bq-insurance-third-party: Could not resolve dependencies for project···
這樣的報(bào)錯(cuò)。
本文檔將詳細(xì)說(shuō)明,如何作出正確的配置去獲取項(xiàng)目需要的構(gòu)件。還有,針對(duì)“我在本地可以構(gòu)建,為何在Rainbond無(wú)法構(gòu)建?”這樣的疑問(wèn)作出解答。
閱讀本文檔,需要讀者對(duì)Rainbond構(gòu)建Java Maven項(xiàng)目原理有一定的理解。
下載與安裝MavenRainbond默認(rèn)提供多種maven版本供用戶選擇,對(duì)應(yīng)版本及相應(yīng)的資源地址獲取見(jiàn)下表:
Maven版本 | 獲取地址 |
---|---|
3.3.1 | http://lang.goodrain.me/jvm/m... |
3.0.5 | http://lang.goodrain.me/jvm/m... |
3.1.1 | http://lang.goodrain.me/jvm/m... |
3.2.5 | http://lang.goodrain.me/jvm/m... |
3.3.9 | http://lang.goodrain.me/jvm/m... |
如果遇到Maven構(gòu)建失敗,請(qǐng)優(yōu)先確認(rèn)當(dāng)前maven版本有關(guān)。如果不能確定,可以下載上述資源,嘗試在本地構(gòu)建。清除構(gòu)建緩存
Rainbond為每一個(gè)服務(wù)的構(gòu)建環(huán)境提供緩存,Maven項(xiàng)目會(huì)對(duì)maven的安裝目錄,配置目錄,和本地倉(cāng)庫(kù)目錄提供了緩存,用戶通過(guò)以下設(shè)置清理緩存。
訪問(wèn)http://<管理節(jié)點(diǎn)>:8081/artifactory/list/libs-release/或者管理節(jié)點(diǎn)訪問(wèn)maven.goodrain.me看能否列出你新添加的構(gòu)件。
如果用戶已經(jīng)擁有完整可用的repository文件夾,也可以使用 import 功能將整個(gè)倉(cāng)庫(kù)完整上傳到repo-local本地倉(cāng)庫(kù)中去。
完整上傳提供了兩種方式:從目錄掛載導(dǎo)入,或者上傳zip。其中第一種方式需要注意的是,上傳的路徑是要在rbd-repo容器中的路徑上傳,所以需要事先執(zhí)行路徑掛載。第二種方式,則需要注意文件上傳大小限制,該值可以在admin —— Configuration——General Configuration 中設(shè)置。
我在本地可以構(gòu)建,為何在Rainbond無(wú)法構(gòu)建?通讀本篇文檔,我們可以發(fā)現(xiàn)執(zhí)行maven構(gòu)建需要注意的細(xì)節(jié)很多,這些微小的細(xì)節(jié)都可能導(dǎo)致構(gòu)建失敗。
但是可以肯定的一點(diǎn)就是,在本地可以構(gòu)建,那么在網(wǎng)絡(luò)條件相同的Rainbond環(huán)境中就可以構(gòu)建。因?yàn)镽ainbond執(zhí)行源碼構(gòu)建時(shí),使用的原理和普通的maven構(gòu)建并無(wú)不同。需要注意的,就是構(gòu)建環(huán)境上微小的差別。
以下是遇到這樣的疑惑時(shí),排查的思路:
版本差異:
這個(gè)差異包括了maven版本的差異,也包括JDK的版本差異(即使是同個(gè)大版本下不同的小版本)。遇到無(wú)法確定原因的報(bào)錯(cuò),這將是首要需要檢查的方面。有關(guān)JDK版本如何選擇,以及出現(xiàn)版本差異影響如何處理,請(qǐng)參見(jiàn)文檔: RAINBOND源碼構(gòu)建JAVA項(xiàng)目選取JDK
GZIP STDIN NOT IN GZIP FORMAT:
構(gòu)建日志如這種報(bào)錯(cuò),基本可以確定為獲取JDK或Maven安裝包失敗,結(jié)合文檔 源碼構(gòu)建提示GZIP STDIN NOT IN GZIP FORMAT 加以解決。
構(gòu)建緩存:
再次強(qiáng)調(diào),用戶應(yīng)該在首次構(gòu)建成功前一直開(kāi)啟清除構(gòu)建緩存直至構(gòu)建成功。這樣可以防止緩存到了不完整或者錯(cuò)誤的包,導(dǎo)致構(gòu)建一直失敗。切記,構(gòu)建會(huì)優(yōu)先去緩存中獲取構(gòu)件。
獲取構(gòu)件失?。?br>這個(gè)問(wèn)題的答案并不惟一,可能出現(xiàn)的情況非常多。
首先,結(jié)合構(gòu)建日志中構(gòu)件下載地址,來(lái)判斷獲取構(gòu)件失敗時(shí),是否使用倉(cāng)庫(kù)私服,使用的是默認(rèn)私服(maven.goodrain.me)抑或是用戶自定義私服(用戶自行指定的artifactory或nexus)。
如果禁用Mirror功能,則默認(rèn)使用中央倉(cāng)庫(kù)。這時(shí)需要判斷網(wǎng)絡(luò)是否可以訪問(wèn)到中央倉(cāng)庫(kù),當(dāng)前構(gòu)件是否在中央倉(cāng)庫(kù)中存在。
如果未禁用Mirror功能,并且使用了Rainbond默認(rèn)倉(cāng)庫(kù)私服(maven.goodrain.me),則默認(rèn)代理中央倉(cāng)庫(kù)。這時(shí)需要判斷網(wǎng)絡(luò)是否可以訪問(wèn)到中央倉(cāng)庫(kù),當(dāng)前構(gòu)件是否在中央倉(cāng)庫(kù)中存在。
如果未禁用Mirror功能,并且使用了用戶自定義私服。則需要判斷網(wǎng)絡(luò)是否可以訪問(wèn)到指定的倉(cāng)庫(kù)私服,當(dāng)前構(gòu)件是否在指定倉(cāng)庫(kù)私服中存在。
401認(rèn)證失?。?
如果構(gòu)建報(bào)錯(cuò):
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project dx-id: Failed to deploy artifacts: Could not transfer artifact com.dx.application:dx-id:pom:0.0.1-20190727.012351-2 from/to snapshots (http://******:8081/artifactory/libs-release): Failed to transfer file: http://*******:8081/artifactory/libs-release/com/dx/application/dx-id/0.0.1-SNAPSHOT/dx-id-0.0.1-20190727.012351-2.pom. Return code is: 401, ReasonPhrase: Unauthorized. -> [Help 1]
說(shuō)明訪問(wèn)用戶指定的倉(cāng)庫(kù)私服是需要認(rèn)證信息的,而認(rèn)證信息一般儲(chǔ)存在用戶日常使用的 setting.xml 文件中。故而,解決這個(gè)問(wèn)題最好的方式,是使用上文中提到的 自定義Setting.xml 的方式。再次強(qiáng)調(diào), 自定義Setting.xml 是作為終極解決方案存在的,同樣適用于其他由于用戶倉(cāng)庫(kù)私服特殊設(shè)置所導(dǎo)致的構(gòu)件獲取失敗。
我的倉(cāng)庫(kù)足夠我的項(xiàng)目構(gòu)建所需,卻依然報(bào)錯(cuò)有構(gòu)件找不到:
Rainbond默認(rèn)的 Maven構(gòu)件全局參數(shù)為 clean dependency:list install 。需要注意的是,dependency:list 需要下載特定的maven plugin,故而,當(dāng)用戶處于一個(gè)離線環(huán)境,并且使用的私服中沒(méi)有對(duì)應(yīng)的構(gòu)件時(shí),必然會(huì)發(fā)生構(gòu)建失敗的情況。請(qǐng)更改為 clean install。
使用rbd-repo代理了其他倉(cāng)庫(kù)私服:
用戶是可以使用rbd-repo組件來(lái)代理其他的遠(yuǎn)程倉(cāng)庫(kù)私服的。但是不同的倉(cāng)庫(kù)私服之間傳輸構(gòu)件有可能會(huì)出現(xiàn)奇奇怪怪的問(wèn)題。故而,我們推薦用戶使用 MAVEN MIRROR URL直接指定遠(yuǎn)程倉(cāng)庫(kù)地址,而不是使用rbd-repo代理。
我在本地可以構(gòu)建,為何在Rainbond環(huán)境下無(wú)法構(gòu)建?這個(gè)疑問(wèn)是用戶在使用源碼構(gòu)建功能出現(xiàn)問(wèn)題時(shí)最常向我們提出的一個(gè)疑惑。甚至也有過(guò)用戶因此放棄Rainbond的例子,我們對(duì)此感到難過(guò)。不可否認(rèn),源碼構(gòu)建這個(gè)功能涉及的知識(shí)點(diǎn)相對(duì)于其他功能而言,更加的廣泛深?yuàn)W、晦澀難明。
但是需要指出的是,Rainbond Java-Maven所使用的構(gòu)建原理,與普通的Maven構(gòu)建原理是一致的。所以從本質(zhì)上講,在本地可以構(gòu)建,在Rainbond環(huán)境下就一定可以構(gòu)建,但是構(gòu)建環(huán)境的設(shè)置,構(gòu)件如何獲取等等細(xì)節(jié)的差別,對(duì)于構(gòu)建結(jié)果的影響是非常大的。所以使用Rainbond源碼構(gòu)建Java-Maven項(xiàng)目,最重要的一點(diǎn),就是找到這些細(xì)微的差別,抹平本地環(huán)境與Rainbond構(gòu)建環(huán)境的不同。
本文檔詳細(xì)介紹了Rainbond源碼構(gòu)建Java-Maven項(xiàng)目時(shí)的各種詳細(xì)設(shè)置與操作。其中很多細(xì)節(jié)都已經(jīng)羅列出來(lái), 可以算作是源碼構(gòu)建失敗時(shí)排查問(wèn)題的詳細(xì)思路總結(jié)。希望Rainbond的用戶在通讀整篇文檔后,對(duì)于Rainbond源碼構(gòu)建功能有更深刻的了解。
本文作者: 好雨科技交付工程師 郭遜
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76067.html
摘要:監(jiān)控項(xiàng)目進(jìn)一步完善集群和服務(wù)監(jiān)控和報(bào)警必然是運(yùn)維同仁們的重點(diǎn)關(guān)注功能。系統(tǒng)服務(wù)注冊(cè)功能改進(jìn),基于健康檢查實(shí)現(xiàn)注冊(cè)的自動(dòng)上線和下線,解決錯(cuò)誤的添加管理節(jié)點(diǎn)導(dǎo)致鏡像倉(cāng)庫(kù)等服務(wù)負(fù)載均衡錯(cuò)誤問(wèn)題。修復(fù)了鏡像錯(cuò)誤導(dǎo)致檢測(cè)失敗后未提供后續(xù)操作的問(wèn)題。 Rainbond 5.1.3發(fā)布,快速部署和運(yùn)維spring cloud集群 今天為大家?guī)?lái)Rainbond 5.1系列第三個(gè)更新版本,本次版本更新...
摘要:發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)架構(gòu)交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源可以對(duì)接和管理虛擬機(jī)和物理服務(wù)器。 Rainbond v5.1.2發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付 Rainbond是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)、架構(gòu)、交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源...
摘要:發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)架構(gòu)交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源可以對(duì)接和管理虛擬機(jī)和物理服務(wù)器。 Rainbond v5.1.2發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付 Rainbond是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)、架構(gòu)、交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源...
摘要:發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)架構(gòu)交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源可以對(duì)接和管理虛擬機(jī)和物理服務(wù)器。 Rainbond v5.1.2發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付 Rainbond是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)、架構(gòu)、交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源...
摘要:發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)架構(gòu)交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源可以對(duì)接和管理虛擬機(jī)和物理服務(wù)器。 Rainbond v5.1.2發(fā)布,微服務(wù)架構(gòu)應(yīng)用便捷管理和交付 Rainbond是開(kāi)源的企業(yè)應(yīng)用云操作系統(tǒng),支撐企業(yè)應(yīng)用的開(kāi)發(fā)、架構(gòu)、交付和運(yùn)維的全流程,通過(guò)無(wú)侵入架構(gòu),無(wú)縫銜接各類企業(yè)應(yīng)用,底層資源...
閱讀 5084·2021-09-07 09:58
閱讀 801·2019-08-30 15:55
閱讀 2940·2019-08-30 15:55
閱讀 930·2019-08-30 15:53
閱讀 1567·2019-08-29 12:57
閱讀 1838·2019-08-26 13:46
閱讀 576·2019-08-26 11:00
閱讀 3674·2019-08-23 15:42