Проблемы с наложением Maven WAR при использовании Hudson + Artifactory - PullRequest
2 голосов
/ 08 февраля 2012

У нас есть три артефакта:

common.jar   : with common classes.
public.war   : depending on the common.jar, contains only public site resources.
internal.war : depends on both common.jar and public.war, adding authentication
               information and security context resource files. Also contains
               few administration site classes.

В настоящее время я структурировал их таким образом, что internal.war накладывает на себя с public.war.

Сборка проекта локально, установка артефактов в локальный репозиторий, работает отлично.

Проблемы начинаются при попытке заставить сборки Hudson работать в следующей последовательности:

  1. Сборка всех проектов в порядке зависимости.
  2. Изменить common.jar (скажем, добавить новый метод класса)
  3. Измените классы internal.war таким образом, чтобы они зависели от времени компиляции в зависимости от изменений, сделанных в шаге 2.
  4. Зафиксируйте оба изменения, запустив сборки Hudson.
  5. Сборка Internal.war завершается неудачно, поскольку не удается найти символы, добавленные на шаге 2.

Каким-то образом сборка на шаге 5. использует старую версию common.jar и не работает из-за этого.

Номер версии common.jar не меняется, скажем, для целей этого примера это 1.0.0-SNAPSHOT.

Если я изменю номер версии common.jar, сборка работает. (Предположительно, потому что существует только один выпуск по номеру выпуска).

Теперь, что может быть причиной этого использования старых артефактов в сборках Hudson?

Мы запускаем сборки maven на Hudson с командой "clean package -e -X -U"

Проверено "Развертывание артефактов в хранилище Maven".

1 Ответ

2 голосов
/ 09 февраля 2012

Трудно однозначно ответить на это без доступа к настоящим poms, но вот что я бы сделал:

1) Убедитесь, что Hudson использует ту же версию Maven, что и на вашей локальной машине.

2) Проверьте действующий pom.xml файла internal.war на машине Hudson в терминале через mvn help:effective-pom, чтобы убедиться, что вы запускаете тот же исполняемый файл mvn, что и ваша работа Hudson.Вам необходимо проверить версию файла common.jar в действующем pom.xml файла internal.war.Он может отличаться от ожидаемого из-за различий в профилях или settings.xml.

3) Проверьте файл settings.xml для вашей установки Hudson в Maven.В частности, вам необходимо проверить, все ли хорошо в ваших разделах управления, серверов и репозиториев.Еще один хороший способ проверить это - перейти в свой проект internal.war и запустить mvn help:effective-settings и посмотреть, соответствует ли то, что есть, на вашем локальном компьютере.

Что-то не так, и это не займет много времени.найти с правильным анализом.

...