Хобрук: Ваш путь к мастерству в программировании

Параллельные сборки Maven на сервере CI

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

Ошибка при установке метаданных артефакта: Ошибка при установке метаданных: Ошибка при обновлении метаданных репозитория группы

Насколько я могу судить, файл maven-metadata-local.xml в репозитории локального пользователя (для артефакта, а не версии артефакта) одновременно записывается другим процессом maven. Есть ли способ позволить maven создавать оба из них параллельно, но дождаться блокировки записи в файле, чтобы обновить его?

15.05.2013

  • Эта проблема зарегистрирована как MINSTALL-54, открытая с 2008 года. 15.05.2013
  • Если вас беспокоит эта проблема, просто создайте патч, это проект с открытым исходным кодом.... 13.05.2015
  • В этот момент они проигнорируют патч... потому что они специалисты по сопровождению. Много лет назад уже был выпущен патч, который они проигнорировали. Используйте подключаемый модуль параллельного безопасного доступа ниже. Не знаю, почему этот код не является частью основного maven. 17.10.2018

Ответы:


1

Похоже, вы используете один и тот же локальный репозиторий для всех ваших заданий сборки, которые не будут работать, как вы уже знаете. Суть Jenkins/Hudson/CI в том, чтобы использовать локальный репозиторий maven для каждого задания сборки. Вам нужно настроить в Jenkins, используя локальный репозиторий maven, чтобы избежать таких ситуаций.

Вы также можете установить плагины Maven для одновременного доступа к безопасному локальному репозиторию, которые позволят вам использовать один и тот же локальный репозиторий. (Полезно, если вы динамически инициализируете агентов)

15.05.2013
  • Использование локального репозитория работает, только если вы имеете дело с CI. Если я разработчик, мне может понадобиться построить оба локально примерно в одно и то же время. Maven должен правильно с этим справиться. Я отвечу на записку @Joe. 15.05.2013
  • Если вам действительно нужно построить два проекта одновременно, вы можете использовать mvn -Dmaven.repo.local=/alternate/repo/location .... Я знаю, что это не работает в Maven, но у меня никогда не было необходимости создавать два проекта одновременно на моей локальной машине. 15.05.2013
  • Если вы хотите использовать одновременный доступ к локальному репозиторию, просто используйте одновременный доступ к безопасному локальному репозиторию. 13.05.2015

  • Новые материалы

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

    Ториго  — революция в игре Го
    Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

    Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
    Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

    Математика и интуиция - Часть 1
    У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..

    Раскрытие возможностей НЛП: часть речевой маркировки и ее проблемы
    В сфере обработки естественного языка (NLP) маркировка частей речи (POS) выступает в качестве фундаментального метода, позволяющего компьютерам понимать и анализировать человеческий язык на..

    Под поверхностью: раскрытие деталей системы с помощью инструментов Linux CLI
    Чем больше вы изучаете Linux и продвигаетесь вперед, тем больше вам нужно проверять информацию о вашей системе. Эта информация может касаться аппаратного обеспечения, такого как процессор,..

    Как реализовать линейную регрессию в JavaScript
    Узнайте, как реализовать линейную регрессию в JavaScript с помощью ML.js Линейная регрессия — это метод машинного обучения, используемый для моделирования связи между зависимой переменной и..