52 lines
2.6 KiB
Markdown
52 lines
2.6 KiB
Markdown
---
|
||
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)
|
||
|
||
***
|
||
## Мета информация
|
||
**Область**:: [[../../meta/zero/00 Maven|00 Maven]]
|
||
**Родитель**::
|
||
**Источник**::
|
||
**Автор**::
|
||
**Создана**:: [[2023-11-20]]
|
||
### Дополнительные материалы
|
||
-
|
||
### Дочерние заметки
|
||
<!-- QueryToSerialize: LIST FROM [[]] WHERE contains(Родитель, this.file.link) or contains(parents, this.file.link) -->
|