Параллельная сборка модулей в Maven.md
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Struchkov Mark 2024-09-08 11:54:40 +03:00
parent 2975edcaa0
commit e942b17888
No known key found for this signature in database
GPG Key ID: A3F0AC3F0FA52F3C
9 changed files with 60 additions and 4 deletions

View File

@ -23,13 +23,12 @@ sudo systemctl enable --now docker
Также установим docker-compose. Обращаю ваше внимание, что актуальным является Docker Compose V2, который в отличие от первой версии поставляется бинарными файлами. Также установим docker-compose. Обращаю ваше внимание, что актуальным является Docker Compose V2, который в отличие от первой версии поставляется бинарными файлами.
[Актуальная версия docker-compose](https://github.com/docker/compose/releases/)
```shell ```shell
mkdir -p ~/.docker/cli-plugins/ mkdir -p ~/.docker/cli-plugins/
curl -SL https://github.com/docker/compose/releases/download/v2.14.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose curl -SL https://github.com/docker/compose/releases/download/v2.14.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
chmod +x ~/.docker/cli-plugins/docker-compose chmod +x ~/.docker/cli-plugins/docker-compose
``` ```
[Актуальная версия docker-compose](https://github.com/docker/compose/releases/)
> [!INFO] > [!INFO]
> Эта команда устанавливает Compose V2 для активного пользователя в каталог `$HOME`. Чтобы установить Docker Compose для всех пользователей вашей системы, замените `~/.docker/cli-plugins` на `/usr/local/lib/docker/cli-plugins`. > Эта команда устанавливает Compose V2 для активного пользователя в каталог `$HOME`. Чтобы установить Docker Compose для всех пользователей вашей системы, замените `~/.docker/cli-plugins` на `/usr/local/lib/docker/cli-plugins`.

View File

@ -5,7 +5,7 @@ tags:
- type/opinion - type/opinion
date: 2024-09-06 date: 2024-09-06
zero-link: zero-link:
- "[[../garden/ru/meta/zero/00 Java разработка|00 Java разработка]]" - "[[../../meta/zero/00 Java разработка|00 Java разработка]]"
parents: parents:
linked: linked:
--- ---

View File

@ -0,0 +1,39 @@
---
aliases:
tags:
- maturity/🌱
date:
- - 2023-11-20
zero-link:
- "[[../../meta/zero/00 Maven|00 Maven]]"
parents:
linked:
---
Небольшая хитрость, которая может ускорить сборку многомодульного maven проекта. Это параллельная сборка модулей.
```shell
mvn -T 1C clean install
```
1C означате использовать 1 поток на 1 ядро процессора
Но есть одно условие. Ваш проект должен содержать модули, которые не зависят друг от друга последовательно.
Объясню на примере проекта, который состоит из 18 модулей. Оранжевыми прямоугольники я выделил модули, которые могут собираться параллельно, так как они не зависят друг от друга.
![400](../../meta/files/images/Pasted%20image%2020231120092703.png)
По факту эти группы модулей зависят только друг от друга. Сначала собирается группа `domain`, от нее зависит группа `context`, потом core и так далее. Без `context` не собрать `core`, думаю суть понятна. Но вот модули core не зависят друг от друга, и могут собираться параллельно.
Для примера вот время сборки в последовательном режиме:
![](../../meta/files/images/Pasted%20image%2020231120092720.png)
А вот в параллельном:
![](../../meta/files/images/Pasted%20image%2020231120092732.png)
Выигрыш почти в два раза.
И на последок, вот как можно настроить этот параметр в Idea, чтобы не приходилось запускать сборку из консоли каждый раз. Эту настройку нужно делать в каждом проекте, она не глобальная.
![](../../meta/files/images/Pasted%20image%2020231120092753.png)

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 KiB

View File

@ -7,7 +7,9 @@ permalink: dev/java
title: Java разработка title: Java разработка
--- ---
- [Устройство Java](Устройство%20Java.md) - [Устройство Java](Устройство%20Java.md)
- [00 Снипеты для Java](00%20Снипеты%20для%20Java.md) - [Снипеты для Java](00%20Снипеты%20для%20Java.md)
- Системы сборки
- [Maven](00%20Maven.md)
- Фреймворки - Фреймворки
- [Quarkus](00%20Quarkus.md) - [Quarkus](00%20Quarkus.md)
- [SpringBoot](00%20SpringBoot.md) - [SpringBoot](00%20SpringBoot.md)

16
meta/zero/00 Maven.md Normal file
View File

@ -0,0 +1,16 @@
---
zero-link:
- "[[00 Java разработка]]"
tags:
- type/zero-link
- maturity/🌱
aliases:
- мавен
- мавеном
date: "[[2023-10-21]]"
parents:
- "[[Система сборки]]"
linked:
title: Maven
---
- [Параллельная сборка модулей в Maven](../../dev/java/Параллельная%20сборка%20модулей%20в%20Maven.md)