新聞中心
項(xiàng)目部署的每一段代碼都必須具有唯一的版本,這一點(diǎn)至關(guān)重要,它可以幫助您跟蹤客戶端的運(yùn)行情況,標(biāo)記部署的更改,并使你的工作變得輕松得多——特別是當(dāng)你在半夜嘗試了解客戶端站點(diǎn)上運(yùn)行的更改時(shí)。

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的銅官網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
在開發(fā)微服務(wù)時(shí),它的重要性是之前的兩倍。通常,你單獨(dú)部署的服務(wù),你是知道服務(wù)使用哪個(gè)依賴項(xiàng)的哪個(gè)版本。而許多開發(fā)人員面臨的需求是如何在依賴項(xiàng)發(fā)生變化時(shí)自動(dòng)(或手動(dòng))更新它們。
在我的一個(gè)項(xiàng)目中有一個(gè)單獨(dú)的存儲(chǔ)庫,包含所有的服務(wù),并分別構(gòu)建和部署。而作為我們持續(xù)集成和部署的一部分,我們希望只構(gòu)建被更改的服務(wù)或其依賴項(xiàng)之一已更改的服務(wù),并且還要確保很容易向系統(tǒng)添加新服務(wù)。
然后我找到了 Versions Maven 插件,它可以用來自動(dòng)更新 Maven 項(xiàng)目的版本,并確保自動(dòng)更新所有依賴它的其他項(xiàng)目。
本次示例項(xiàng)目提供了三種服務(wù)。service2依賴于service1 、services3 依賴于 service1 和 service2。
每個(gè)服務(wù)都有一個(gè)包含自己POM文件的文件夾,每個(gè)子服務(wù)都有一個(gè)子文件夾。如下圖所示:
??
我需要一個(gè)中心位置來管理所有的服務(wù)版本,所以我添加了以下到主(聚合器) pom.xml:
. . .1.1-SNAPSHOT 2.1-SNAPSHOT 3.1-SNAPSHOT
當(dāng)服務(wù)版本改變時(shí),我想自動(dòng)更新服務(wù) pom.xml 文件中的版本,所以我在聚合器 pom.xml 中添加了以下內(nèi)容:
. . .0 generate-sources none -invalid-
. . .org.codehaus.mojo versions-maven-plugin 2.7 ${version.phase} set update-version false ${service.name}* ${service.version}
我添加了三個(gè)新屬性,可以通過每個(gè)單獨(dú)的服務(wù)進(jìn)行設(shè)置:
- version.phase -版本插件運(yùn)行階段。我需要在編譯之前運(yùn)行它,因此我定義了一個(gè)名為 version.update 的新屬性。默認(rèn)設(shè)置為一個(gè)不存在的階段,這樣版本控制將只針對(duì)我需要它們運(yùn)行的服務(wù)運(yùn)行。
- service.name -服務(wù)名稱。因?yàn)橄胍凶禹?xiàng)目具有相同的版本,這里使用了$ {service.name}。
- service.version-設(shè)置服務(wù)版本。
接下來在每個(gè)服務(wù)(service1\pom.xml)添加下面幾行:
service1 ${version.update.enable} ${service1.version}
現(xiàn)在每個(gè)服務(wù)都定義了它的名稱(與目錄相同),設(shè)置 version.phase 使用 version.update.enable(其被設(shè)置 generate-sources)和設(shè)置該版本的值為在根目錄 pom.xml 中定義的屬性。
現(xiàn)在,如果你更新版本運(yùn)行 MVN 編譯版本將會(huì)自動(dòng)更新:
??
使用這種方法,我們能夠向所有現(xiàn)有的微服務(wù)添加版本控制,并輕松地創(chuàng)建新服務(wù)。這樣,所有依賴版本的自動(dòng)版本更新就完成了。
新聞標(biāo)題:在Monorepo中,如何使用Maven對(duì)多個(gè)微服務(wù)進(jìn)行版本控制?
本文網(wǎng)址:http://www.5511xx.com/article/cdscehg.html


咨詢
建站咨詢
