Локальный репозиторий Maven в общем глобальном каталоге для многократного параллельного выполнения - PullRequest
1 голос
/ 26 мая 2019

У меня есть машина, в которой происходит множественное параллельное выполнение maven. Каждое выполнение выполняет приведенную ниже команду в отдельном каталоге рабочей области

mvn -f main/pom.xml clean package -DskipTests -T 6

Может кто-нибудь сообщить мне, должен ли я использовать отдельный путь локального репо maven (-Dmaven.repo.local=$MAVEN_REPO) для каждого выполнения или я могу использовать общий каталог .m2 для всех параллельных запусков? Какова общая практика?

  • Maven Версия 3.5
  • Java 8

Ответы [ 3 ]

1 голос
/ 26 мая 2019

Вы не можете совместно использовать локальный репозиторий между выполнениями.Они не реализованы, чтобы допускать множественные параллельные процессы, обращающиеся к ним.Вы можете и должны запускать локальный менеджер хранилищ кэширования между своими процессами и хранилищами в Интернете.Этим можно поделиться.

0 голосов
/ 28 мая 2019

Это также обсуждалось в списке рассылки пользователей . Краткое содержание обсуждения

Здравствуйте,

Это наоборот, могут быть ситуации, когда одна работа полагается на установленные артефакты от другого, в этом случае вы потребуется общий репо. Это, однако, плохой стиль. Во всех остальных случаях Вы можете использовать локальный репозиторий executor- или даже local-workspace, если у вас достаточно места.

Преимущество отказа от одновременного доступа состоит в том, что вы получаете меньше влияет от одной работы к другой (особенно если вы работаете с моментальные снимки или несколько различных вышестоящих артефактов с той же версией в разных репах) и что нет одновременных загрузок (которые само по себе иногда приводит к ошибкам контрольной суммы).

Грусс Бернд

0 голосов
/ 26 мая 2019

Я начну с того, что можно установить несколько локальных репозиториев или локальный репозиторий для каждого проекта. Действительно, способ сделать это, установив каждый проект с его собственным settings.xml. Каждый файл settings.xml будет иметь тег localRepository, указывающий на другой путь. Флаг Dmaven.repo.local = / path / to / repo для запуска проекта указывает на выполнение файла settings.xml с определенным локальным хранилищем.

Обычно это вообще не нужно. Maven может обрабатывать параллельные выполнения, а наличие центрального локального хранилища для всех ваших проектов (где установлены и загружаются все артефакты) может облегчить их обработку и не сократит время сборки. Единственный способ повлиять на вас, если один из ваших проектов требует артефакт, созданный другим, но это также не должно обрабатываться несколькими локальными репозиториями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...