Автоматически принудительно обновлять pom до новых версий изнутри теста

Это не связано с обновлением зависимостей pom с использованием цели maven. Я уже разобрался с этим. Поэтому я отвечаю за создание, упаковку и обслуживание общих утилит. Эти общие утилиты, в свою очередь, используются всеми командами в организации. Проблема в том, что команды, использующие эти утилиты, не обновляют зависимости, если это не последнее средство. Мы бы хотели, чтобы они использовали последнюю версию наших общих утилит, за исключением очень немногих. Теперь я натолкнулся на этот плагин Maven Versions от mojohaus, который, я думаю, удовлетворяет мои потребности, используя две цели: versions:update-properties а также versions:use-latest-releases, Это служит моей цели, кроме двух вещей:

  1. Я не вижу способа исключить определенный groupid: artifactid из зависимости / свойства обновления

  2. Мы действительно хотим, чтобы это было обязательным условием (может быть, частью выполнения теста - в основном это касается утилит автоматизации тестирования), а не целью maven. Потому что, если это мавенская цель, она должна вызываться отдельно и, следовательно, становится необязательной для команд.

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

Любое направление / помощь по этому вопросу приветствуется.

Изменить: мы запускаем наши тесты, используя maven цели clean install уже. Поэтому они используют существующие пом. Мы хотим, чтобы обновление зависимостей происходило до запуска тестов. Также желательно зафиксировать изменения в системе контроля версий (bitbucket), если это возможно. У нас есть настройка тестов с использованием Jenkins, но команды также проводят несколько тестов на локальных машинах.

Изменить: Нашел ответ на #1. Плагин позволяет исключить регулярное выражение для группы и идентификатора артефакта. используя теги excludes а также excludesList

1 ответ

Извините за настойчивость. С точки зрения Maven я вижу два основных решения:

  1. Ваши проекты и ваша утилита тесно связаны между собой, и каждый проект всегда должен использовать последнюю версию. Затем вы можете объединить все проекты и вашу утилиту в один многомодульный проект. Это гарантирует, что все обновляется все время, но требует, чтобы все проекты и ваши утилиты всегда собирались вместе (не отдельно).

  2. Вы распространяете свои утилиты по разным проектам, которые создаются и выпускаются в разное время. Затем, проекты должны решать, когда обновлять. К сожалению, не существует стандартного способа осудить банки.

Если я вас правильно понимаю, вам нужно что-то "посередине". Это может быть трудно достичь.

Другие вопросы по тегам