首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >微服务和maven结构

微服务和maven结构
EN

Stack Overflow用户
提问于 2022-09-08 16:56:50
回答 1查看 88关注 0票数 2

我真搞不懂有人怎么会用Maven构建一些微服务。我见过很多使用多模块策略的项目

  1. ,这是一个有效的策略吗?这不是整个项目吗?因为我需要从根构建项目(父pom.xml)?一切都与我认为的

有关

  1. ,我应该把一切都建立在他们自己的身上吗?

代码语言:javascript
运行
复制
- firstapplication
代码语言:javascript
运行
复制
- seconddapplication
代码语言:javascript
运行
复制
- thirdapplication

任何帮助都是非常感谢的。

我真的不知道这是怎么回事

代码语言:javascript
运行
复制
[ parentpom.xml ]
|
|___first-application
|   |
|   |__ data-layer
|   |   |__ pom.xml
|   |   
|   |__ services
|   |   |__ [[ USES message-queue:producer ]]
|   |   |
|   |   |__ pom.xml
|   |   
|   |__ domain
|   |   |__ pom.xml
|   |
|   |__ application (REST)
|   |   |__ pom.xml
|   |
|   |__ pom.xml
|   
|___second-application
|   |
|   |__ data-layer
|   |   |__ pom.xml
|   |
|   |__ services
|   |   |__ pom.xml
|   |
|   |__ domain
|   |   |__ pom.xml
|   |
|   |__ application (REST)
|   |   |__ pom.xml
|   |
|   |__ pom.xml
|
|___third-application
|   |
|   |__ data-layer
|   |   |__ pom.xml
|   |
|   |__ services
|   |   |__ [[ USES message-queue:consumer ]]
|   |   |
|   |   |__ pom.xml
|   |
|   |__ domain
|   |   |__ pom.xml
|   |
|   |__ application (REST)
|   |   |__ pom.xml
|   |
|   |__ pom.xml
|
|
|___message-queue (as wrapper of kafka/rabbit/etc)
|   |
|   |__ configuration_of_message_queue
|   |   |__ pom.xml
|   |
|   |__ consumer
|   |   |
|   |   |__ [[ USES message:queue:configuration ]]
|   |   |
|   |   |
|   |   |__ pom.xml
|   |
|   |__ producer
|   |   |
|   |   |__ [[ USES message:queue:configuration ]]
|   |   |
|   |   |
|   |   |__ pom.xml
|   |
|   |__ pom.xml
|
|
|___ commonlibrary (some projects use this, some others dont)
    |__ pom.xml
代码语言:javascript
运行
复制
<parentpom>
  <modules>
    <module>first</module>
    <module>second</module>
    <module>third</module>
    <module>message-queue</module>
    <module>commonlibrary</module>
  </modules>
</parentpom>
EN

回答 1

Stack Overflow用户

发布于 2022-09-08 17:15:35

如果monorepo是一个很好的策略或多个回购(每个服务/库都有回购),那么您正在发出信号。

注:

每个独立的回购或相同的回购可以是自己的多模块项目本身。

已经有一个关于单一和多个回购的巨大争论。

两者都很适合微型服务。

很多事情都成为这个决定的影响因素。

  1. ,您打算如何编写devops管道?
  2. ??如何构造您的构建?
  3. 团队需求??对于每个微服务/团队结构,多个团队/成员在同一次回购中是否可以。

如果您要使用monorepo(单存储库,所有microservices+库)

你可以在一个地方看到所有的代码。codebase

  • Easy的代码库是相同的,

  • 很容易协作。

  • 很容易构建和修复任何问题,比如控制构建生命周期的单个codebase.

  • However,--即首先按照顺序构建libs,然后才能在冲突和问题中运行--如果多个团队在同一个codebase.

  • However,中提交,那么所有的队友都必须遵循一些标准、实践和指导方针,当许多人都在进行相同的回购时。对于提交、构建和发布

,有适当的过程是非常必要的。

如果您要进行多个回购(每个ms和libs存储库)

您需要确保按需要构建具有依赖关系的独立项目。projects.

  • Debugging

  • 构建管道将分别配置,交叉依赖项也将存在。sometimes.

  • Teams/members会有额外的开销来维护单独的,但这并不困难,sometimes.
  1. Teams/members将进行协作,并负责维护自己的存储库。如果该回购失败了,那么回购和它的构建中断。如果您有足够的带宽来维护多个microservices.
  2. Its,那么需要确保您首先发布依赖项并构建它们,如果您有足够的带宽来维护多个repositories.

,那么就可以很好地处理您的

本质上,这两种方法都是很好的方法,取决于您的团队结构、成熟度和您感到舒服的模型。

为了我们的服务,我遵循一种方式,以下是我们的结构。

代码语言:javascript
运行
复制
├── README.md
├── db
│   └── create-dbs.sh
├── docker-compose.yaml
├── docs
│   ├── 1. Prerequisites.md
│   ├── 2. Documentation.md
│   ├── 3. Running services.md
├── pom.xml
├── services
│   ├── books-service
│   └── products-service
├── shared
│   ├── archunit-tests
│   ├── auditing-utils
│   ├── project-bom
│   ├── event-publisher
│   ├── logging-utils
│   ├── rest-clients
│   └── utils
└── templates
    └── azure-template

给你的几个建议:

libraries.

  • You中的
  1. 可以为所有服务(Bom)提供一个单独的文件夹,用于服务、库、文档等。
  2. --父pom可以先用库构建整个项目,然后services.
  3. All文件夹不必是maven项目,只能是简单的文件夹。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73652655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档