成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在Monorepo中,如何使用Maven對多個微服務進行版本控制?

譯文
開發 開發工具
在開發微服務時,項目代碼的唯一性至關重要,那么如何對微服務進行版本控制呢?

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

在開發微服務時,它的重要性是之前的兩倍。通常,你單獨部署的服務,你是知道服務使用哪個依賴項的哪個版本。而許多開發人員面臨的需求是如何在依賴項發生變化時自動(或手動)更新它們。

在我的一個項目中有一個單獨的存儲庫,包含所有的服務,并分別構建和部署。而作為我們持續集成和部署的一部分,我們希望只構建被更改的服務或其依賴項之一已更改的服務,并且還要確保很容易向系統添加新服務。

然后我找到了 Versions Maven 插件,它可以用來自動更新 Maven 項目的版本,并確保自動更新所有依賴它的其他項目。

本次示例項目提供了三種服務。service2依賴于service1 、services3 依賴于 service1 和 service2。

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

??

我需要一個中心位置來管理所有的服務版本,所以我添加了以下到主(聚合器) 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>

當服務版本改變時,我想自動更新服務 pom.xml 文件中的版本,所以我在聚合器 pom.xml 中添加了以下內容:

<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>

我添加了三個新屬性,可以通過每個單獨的服務進行設置:

  • version.phase -版本插件運行階段。我需要在編譯之前運行它,因此我定義了一個名為 version.update 的新屬性。默認設置為一個不存在的階段,這樣版本控制將只針對我需要它們運行的服務運行。
  • service.name -服務名稱。因為想要所有子項目具有相同的版本,這里使用了$ {service.name}。
  • service.version-設置服務版本。

接下來在每個服務(service1\pom.xml)添加下面幾行:

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

現在每個服務都定義了它的名稱(與目錄相同),設置 version.phase 使用 version.update.enable(其被設置 generate-sources)和設置該版本的值為在根目錄 pom.xml 中定義的屬性。

現在,如果你更新版本運行 MVN 編譯版本將會自動更新:

??

使用這種方法,我們能夠向所有現有的微服務添加版本控制,并輕松地創建新服務。這樣,所有依賴版本的自動版本更新就完成了。

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】


責任編輯:黃顯東 來源: dzone
相關推薦

2011-01-20 10:33:30

Postfix

2017-03-10 15:43:06

SSH框架微服務

2010-06-02 14:16:18

SVN版本控制

2022-09-06 10:29:27

無服務器Serverless

2023-03-24 16:18:08

微服務架構

2023-06-06 16:10:11

2018-05-04 15:27:22

Spring Boo Web開發

2024-07-10 10:51:39

SpringEureka數據中心

2021-01-26 05:17:54

RESTfulAPI

2022-08-08 10:09:58

服務網格架構

2023-04-10 07:23:24

軟件微服務網絡

2018-12-07 12:30:16

CVSGit版本控制

2013-12-18 09:56:20

AngularJS測試

2017-07-10 10:51:21

微服務領域事件Microservic

2017-04-19 08:58:54

微服務領域事件事件

2023-07-14 21:45:46

IDEA微服務項目

2023-03-20 08:00:00

公共云開發Spring Clo

2011-08-17 15:24:09

windows7鼠標超頻

2022-09-14 09:18:52

SubversionLinux系統

2020-12-03 07:43:03

JS Ajax JavaScript
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲 欧美 另类 日韩 | 久久最新 | 欧美激情综合 | 精品国产乱码久久久久久蜜柚 | 国产欧美精品一区 | 成人三级在线观看 | 午夜精品| 精品久久久久久亚洲国产800 | 亚洲一区中文字幕 | 视频二区在线观看 | 国户精品久久久久久久久久久不卡 | 国产高清91| 四季久久免费一区二区三区四区 | 日韩精品一区二区三区久久 | 国产亚洲一区二区精品 | 色偷偷噜噜噜亚洲男人 | 奇色影视 | 亚洲www| 欧美 日韩 国产 成人 在线 91 | 伊人国产精品 | 日本久久网 | 国产这里只有精品 | 午夜av成人 | 午夜合集 | 色综合99 | 四虎永久免费影院 | 亚洲高清视频一区二区 | 国产精品美女一区二区 | 欧美一级二级视频 | 亚洲人成人一区二区在线观看 | 久久精品一级 | 欧美视频精品 | 久久久久国产精品午夜一区 | 日韩在线视频免费观看 | 精品视频一区二区三区在线观看 | 九九热精品视频 | 性一交一乱一透一a级 | 美女天堂| 波多野结衣先锋影音 | 特黄级国产片 | 久久艹免费视频 |