您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“RAINBOND源碼如何構(gòu)建JAVA項目配置MAVEN倉庫”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“RAINBOND源碼如何構(gòu)建JAVA項目配置MAVEN倉庫”這篇文章吧。
根據(jù)大量的Rainbond用戶反饋,我們發(fā)現(xiàn)在Rainbond源碼構(gòu)建java-maven項目的過程中,最容易出現(xiàn)問題的一環(huán)就是獲取構(gòu)件失敗。
比如:
[ERROR] Failed to execute goal on project bq-insurance-third-party: Could not resolve dependencies for project···
這樣的報錯。
Rainbond默認(rèn)提供多種maven版本供用戶選擇,對應(yīng)版本及相應(yīng)的資源地址獲取見下表:
Maven版本 | 獲取地址 |
---|---|
3.3.1 | http://lang.goodrain.me/jvm/maven/maven-3.3.1.tar.gz |
3.0.5 | http://lang.goodrain.me/jvm/maven/maven-3.0.5.tar.gz |
3.1.1 | http://lang.goodrain.me/jvm/maven/maven-3.1.1.tar.gz |
3.2.5 | http://lang.goodrain.me/jvm/maven/maven-3.2.5.tar.gz |
3.3.9 | http://lang.goodrain.me/jvm/maven/maven-3.3.9.tar.gz |
如果遇到Maven構(gòu)建失敗,請優(yōu)先確認(rèn)當(dāng)前maven版本有關(guān)。如果不能確定,可以下載上述資源,嘗試在本地構(gòu)建。
Rainbond為每一個服務(wù)的構(gòu)建環(huán)境提供緩存,Maven項目會對maven的安裝目錄,配置目錄,和本地倉庫目錄提供了緩存,用戶通過以下設(shè)置清理緩存。
<img src="https://cache.yisu.com/upload/information/20210523/355/709593.png" >
用戶應(yīng)該在首次構(gòu)建成功前一直開啟清除構(gòu)建緩存直至構(gòu)建成功。這樣可以防止緩存到了不完整或者錯誤的包,導(dǎo)致構(gòu)建一直失敗。切記,構(gòu)建會優(yōu)先去緩存中獲取構(gòu)件。
Rainbond源碼構(gòu)建java-maven項目時,提供了默認(rèn)的構(gòu)建運行環(huán)境設(shè)置。
<img src="https://grstatic.oss-cn-shanghai.aliyuncs.com/images/5.1.5/jdk&maven/maven2.png" >
開啟清除構(gòu)建緩存: 點擊即可在每次構(gòu)建之前清除構(gòu)建緩存。默認(rèn)不開啟。
Maven版本: 選擇Maven版本,默認(rèn)3.3.1。
禁用Maven Mirror: 點擊后禁用Maven Mirror設(shè)置,即獲取構(gòu)件時不再通過rbd-repo(Artifactory)服務(wù),直接前往中央倉庫或者pom.xml
中指定的倉庫獲取構(gòu)件。后續(xù)的 MAVEN MIRROR OF
MAVEN MIRROR URL
設(shè)置失效。默認(rèn)不會禁用。
MAVEN MIRROR OF: 在開啟mirror功能后,由該參數(shù)來指定對哪些倉庫進(jìn)行鏡像緩存。默認(rèn)為中央倉庫(central),當(dāng)指定為 * 的時候,會將所有倉庫進(jìn)行鏡像緩存。
MAVEN MIRROR URL: 指定鏡像倉庫地址,默認(rèn)為Rainbond自帶的 maven.goodrain.me (即rbd-repo服務(wù)地址)。如果用戶具有公司內(nèi)部使用的私服,推薦直接指定為其地址,指定格式類似:http://IP:8081/nexus/content/groups/public/
Maven構(gòu)件參數(shù): 默認(rèn)設(shè)置為忽略單元測試。用戶根據(jù)項目情況自行設(shè)置。
Maven構(gòu)件全局參數(shù): 默認(rèn)值為 clean dependency:list install
。需要注意的是,dependency:list
需要下載特定的maven plugin,故而,當(dāng)用戶處于一個離線環(huán)境,并且使用的私服中沒有對應(yīng)的構(gòu)件時,必然會發(fā)生構(gòu)建失敗的情況。請更改為 clean install
。
MAVEN構(gòu)建Java參數(shù)配置: 默認(rèn)配置為 -Xmx1024m
。該選項指定了maven構(gòu)建時使用的內(nèi)存,根據(jù)用戶環(huán)境自行設(shè)置。
需要指出的是,指定
MAVEN MIRROR OF
參數(shù)的時候,需要考慮所指定的倉庫是否可以被識別。倉庫名是在 maven所使用的setting.xml
文件中指定的,而Rainbond默認(rèn)使用的setting.xml
中只會添加上述的各項配置?。?!所以用戶日常構(gòu)建所使用的自定義的倉庫名不會被識別。這種情況下,可以指定為 * 即可緩存所有的構(gòu)件;或者,使用用戶自己的setting.xml
文件來替換Rainbond默認(rèn)文件。
用戶可以配置特殊的環(huán)境變量,來指定自己在本地構(gòu)建項目時所使用的 setting.xml
,指定后,默認(rèn)構(gòu)建環(huán)境配置中的選項都將失效。
這樣的配置將會是一個終極解決方案,用戶在本地可以構(gòu)建,那么在Rainbond就也可以構(gòu)建。因為使用指定的setting.xml文件后,Rainbond構(gòu)建環(huán)境的一切,都和本地不再有區(qū)別。
用戶可以將自己以往使用的setting.xml
放在項目源碼目錄中,當(dāng)該文件處于源碼根目錄下的時候,請這么做: 設(shè)置環(huán)境變量 BUILD_MAVEN_SETTINGS_PATH=/app/setting.xml
,即可使用到該文件。
Rainbond源碼構(gòu)建時,默認(rèn)會將源碼目錄全部文件存放在 /app 目錄下,故而該文件的路徑變?yōu)榱?/app/setting.xml
如果setting.xml
中存在敏感信息,不宜出現(xiàn)在源碼目錄中。那么可以將其上傳到諸如對象存儲等處,提供下載地址。然后: 設(shè)置環(huán)境變量 MAVEN_SETTINGS_URL=http://somewhere/setting.xml
來使用該文件。
有的用戶公司內(nèi)部并沒有倉庫私服,同時又希望可以在離線的環(huán)境下使用Rainbond源碼構(gòu)建maven項目。那就需要利用rbd-repo(Artifactory)服務(wù)搭建自己的倉庫私服,并把依賴包上傳上去。
訪問 http://管理節(jié)點IP:8081
并用管理員賬號(admin/password
)登錄。
創(chuàng)建 Local 類型的Maven倉庫。示例創(chuàng)建一個Local
類型的Maven倉庫,名稱為 repo-local
向本地倉庫repo-local
上傳自己的jar包
查看依賴聲明信息
將repo-local添加到libs-release
虛擬倉庫中
<img src="https://cache.yisu.com/upload/information/20210523/355/709595.png" width="85%" />
<img src="https://cache.yisu.com/upload/information/20210523/355/709596.png" width="80%" />
<img src="https://cache.yisu.com/upload/information/20210523/355/709597.png" width="90%" />
訪問http://<管理節(jié)點>:8081/artifactory/list/libs-release/
或者管理節(jié)點訪問maven.goodrain.me
看能否列出你新添加的構(gòu)件。
如果用戶已經(jīng)擁有完整可用的repository文件夾,也可以使用 import 功能將整個倉庫完整上傳到repo-local本地倉庫中去。
<img src="https://cache.yisu.com/upload/information/20210523/355/709599.png" >
<img src="https://cache.yisu.com/upload/information/20210523/355/709601.png" >
完整上傳提供了兩種方式:從目錄掛載導(dǎo)入,或者上傳zip。其中第一種方式需要注意的是,上傳的路徑是要在rbd-repo容器中的路徑上傳,所以需要事先執(zhí)行路徑掛載。第二種方式,則需要注意文件上傳大小限制,該值可以在admin —— Configuration——General Configuration 中設(shè)置。
通讀本篇文檔,我們可以發(fā)現(xiàn)執(zhí)行maven構(gòu)建需要注意的細(xì)節(jié)很多,這些微小的細(xì)節(jié)都可能導(dǎo)致構(gòu)建失敗。
但是可以肯定的一點就是,在本地可以構(gòu)建,那么在網(wǎng)絡(luò)條件相同的Rainbond環(huán)境中就可以構(gòu)建。因為Rainbond執(zhí)行源碼構(gòu)建時,使用的原理和普通的maven構(gòu)建并無不同。需要注意的,就是構(gòu)建環(huán)境上微小的差別。
以下是遇到這樣的疑惑時,排查的思路:
版本差異: 這個差異包括了maven版本的差異,也包括JDK的版本差異(即使是同個大版本下不同的小版本)。遇到無法確定原因的報錯,這將是首要需要檢查的方面。有關(guān)JDK版本如何選擇,以及出現(xiàn)版本差異影響如何處理,請參見文檔: RAINBOND源碼構(gòu)建JAVA項目選取JDK
GZIP STDIN NOT IN GZIP FORMAT: 構(gòu)建日志如這種報錯,基本可以確定為獲取JDK或Maven安裝包失敗,結(jié)合文檔 源碼構(gòu)建提示GZIP STDIN NOT IN GZIP FORMAT RAINBOND源碼構(gòu)建JAVA項目選取JDK 加以解決。
構(gòu)建緩存: 再次強(qiáng)調(diào),用戶應(yīng)該在首次構(gòu)建成功前一直開啟清除構(gòu)建緩存直至構(gòu)建成功。這樣可以防止緩存到了不完整或者錯誤的包,導(dǎo)致構(gòu)建一直失敗。切記,構(gòu)建會優(yōu)先去緩存中獲取構(gòu)件。
獲取構(gòu)件失敗: 這個問題的答案并不惟一,可能出現(xiàn)的情況非常多。
首先,結(jié)合構(gòu)建日志中構(gòu)件下載地址,來判斷獲取構(gòu)件失敗時,是否使用倉庫私服,使用的是默認(rèn)私服(maven.goodrain.me)抑或是用戶自定義私服(用戶自行指定的artifactory或nexus)。
如果禁用Mirror功能,則默認(rèn)使用中央倉庫。這時需要判斷網(wǎng)絡(luò)是否可以訪問到中央倉庫,當(dāng)前構(gòu)件是否在中央倉庫中存在。
如果未禁用Mirror功能,并且使用了Rainbond默認(rèn)倉庫私服(maven.goodrain.me),則默認(rèn)代理中央倉庫。這時需要判斷網(wǎng)絡(luò)是否可以訪問到中央倉庫,當(dāng)前構(gòu)件是否在中央倉庫中存在。
如果未禁用Mirror功能,并且使用了用戶自定義私服。則需要判斷網(wǎng)絡(luò)是否可以訪問到指定的倉庫私服,當(dāng)前構(gòu)件是否在指定倉庫私服中存在。
401認(rèn)證失?。?如果構(gòu)建報錯:
[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]
說明訪問用戶指定的倉庫私服是需要認(rèn)證信息的,而認(rèn)證信息一般儲存在用戶日常使用的 setting.xml
文件中。故而,解決這個問題最好的方式,是使用上文中提到的 自定義Setting.xml 的方式。再次強(qiáng)調(diào), 自定義Setting.xml 是作為終極解決方案存在的,同樣適用于其他由于用戶倉庫私服特殊設(shè)置所導(dǎo)致的構(gòu)件獲取失敗。
我的倉庫足夠我的項目構(gòu)建所需,卻依然報錯有構(gòu)件找不到: Rainbond默認(rèn)的 Maven構(gòu)件全局參數(shù)
為 clean dependency:list install
。需要注意的是,dependency:list
需要下載特定的maven plugin,故而,當(dāng)用戶處于一個離線環(huán)境,并且使用的私服中沒有對應(yīng)的構(gòu)件時,必然會發(fā)生構(gòu)建失敗的情況。請更改為 clean install
。
使用rbd-repo代理了其他倉庫私服: 用戶是可以使用rbd-repo組件來代理其他的遠(yuǎn)程倉庫私服的。但是不同的倉庫私服之間傳輸構(gòu)件有可能會出現(xiàn)奇奇怪怪的問題。故而,我們推薦用戶使用 MAVEN MIRROR URL
直接指定遠(yuǎn)程倉庫地址,而不是使用rbd-repo代理。
以上是“RAINBOND源碼如何構(gòu)建JAVA項目配置MAVEN倉庫”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。