偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

在Monorepo中,如何使用Maven對(duì)多個(gè)微服務(wù)進(jìn)行版本控制?

譯文
開(kāi)發(fā) 開(kāi)發(fā)工具
在開(kāi)發(fā)微服務(wù)時(shí),項(xiàng)目代碼的唯一性至關(guān)重要,那么如何對(duì)微服務(wù)進(jìn)行版本控制呢?

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

在開(kāi)發(fā)微服務(wù)時(shí),它的重要性是之前的兩倍。通常,你單獨(dú)部署的服務(wù),你是知道服務(wù)使用哪個(gè)依賴(lài)項(xiàng)的哪個(gè)版本。而許多開(kāi)發(fā)人員面臨的需求是如何在依賴(lài)項(xiàng)發(fā)生變化時(shí)自動(dòng)(或手動(dòng))更新它們。

在我的一個(gè)項(xiàng)目中有一個(gè)單獨(dú)的存儲(chǔ)庫(kù),包含所有的服務(wù),并分別構(gòu)建和部署。而作為我們持續(xù)集成和部署的一部分,我們希望只構(gòu)建被更改的服務(wù)或其依賴(lài)項(xiàng)之一已更改的服務(wù),并且還要確保很容易向系統(tǒng)添加新服務(wù)。

然后我找到了 Versions Maven 插件,它可以用來(lái)自動(dòng)更新 Maven 項(xiàng)目的版本,并確保自動(dòng)更新所有依賴(lài)它的其他項(xiàng)目。

本次示例項(xiàng)目提供了三種服務(wù)。service2依賴(lài)于service1 、services3 依賴(lài)于 service1 和 service2。

每個(gè)服務(wù)都有一個(gè)包含自己POM文件的文件夾,每個(gè)子服務(wù)都有一個(gè)子文件夾。如下圖所示:

??

我需要一個(gè)中心位置來(lái)管理所有的服務(wù)版本,所以我添加了以下到主(聚合器) pom.xml:

<properties>
. . .
<!-- Versions -->
<service1.version>1.1-SNAPSHOT</service1.version>
<service2.version>2.1-SNAPSHOT</service2.version>
<service3.version>3.1-SNAPSHOT</service3.version>

當(dāng)服務(wù)版本改變時(shí),我想自動(dòng)更新服務(wù) pom.xml 文件中的版本,所以我在聚合器 pom.xml 中添加了以下內(nèi)容:

<properties>
. . .
<!-- auto version related -->
<service.version>0</service.version>
<version.update.enable>generate-sources</version.update.enable>
<version.phase>none</version.phase>
<service.name>-invalid-</service.name>
. . .
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<phase>${version.phase}</phase>
<goals>
<goal>set</goal>
</goals>
<id>update-version</id>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
<artifactId>${service.name}*</artifactId>
<newVersion>${service.version}</newVersion>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

我添加了三個(gè)新屬性,可以通過(guò)每個(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ù)名稱(chēng)。因?yàn)橄胍凶禹?xiàng)目具有相同的版本,這里使用了$ {service.name}。
  • service.version-設(shè)置服務(wù)版本。

接下來(lái)在每個(gè)服務(wù)(service1\pom.xml)添加下面幾行:

<properties>
<service.name>service1</service.name>
<version.phase>${version.update.enable}</version.phase>
<service.version>${service1.version}</service.version>
</properties>

現(xiàn)在每個(gè)服務(wù)都定義了它的名稱(chēng)(與目錄相同),設(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ù)。這樣,所有依賴(lài)版本的自動(dòng)版本更新就完成了。

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】


責(zé)任編輯:黃顯東 來(lái)源: dzone
相關(guān)推薦

2011-01-20 10:33:30

Postfix

2010-06-02 14:16:18

SVN版本控制

2017-03-10 15:43:06

SSH框架微服務(wù)

2022-09-06 10:29:27

無(wú)服務(wù)器Serverless

2023-03-24 16:18:08

微服務(wù)架構(gòu)

2023-06-06 16:10:11

2018-05-04 15:27:22

Spring Boo Web開(kāi)發(fā)

2021-01-26 05:17:54

RESTfulAPI

2024-07-10 10:51:39

SpringEureka數(shù)據(jù)中心

2022-08-08 10:09:58

服務(wù)網(wǎng)格架構(gòu)

2023-04-10 07:23:24

軟件微服務(wù)網(wǎng)絡(luò)

2018-12-07 12:30:16

CVSGit版本控制

2013-12-18 09:56:20

AngularJS測(cè)試

2011-08-17 15:24:09

windows7鼠標(biāo)超頻

2020-12-03 07:43:03

JS Ajax JavaScript

2017-07-10 10:51:21

微服務(wù)領(lǐng)域事件Microservic

2017-04-19 08:58:54

微服務(wù)領(lǐng)域事件事件

2023-03-20 08:00:00

公共云開(kāi)發(fā)Spring Clo

2023-07-14 21:45:46

IDEA微服務(wù)項(xiàng)目

2021-09-27 16:39:10

PythonGif壓縮
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)