Почему Хадсон игнорирует мой файл profiles.xml? - PullRequest
2 голосов
/ 22 сентября 2010

У меня есть проект Maven2 с файлами pom.xml и profiles.xml на одном уровне. Конфигурация проекта обеспечивается свойствами профиля Maven:

dbhost=${dbhost}
dbport=${dbport}
// etc.

Локально каждый разработчик настраивает свою сборку в "profiles.xml". Хорошо работает.

Для непрерывной интеграции на наш сервер SCM был помещен ci "profiles.xml" (на том же уровне, что и pom.xml).

Проблема в том, что Хадсон просто игнорирует этот файл во время сборки Maven, тогда как "-P hudsonprofile" установлен правильно.

Если тот же профиль перемещен непосредственно в «pom.xml» или в глобальный «settings.xml», сборка работает. Итак, у нас уже есть решение.

Я также знаю, что файл "profiles.xml" устарел, но я хотел бы понять, почему соответствие между сборкой Hudson и моей локальной сборкой ...

Примечание. Хадсон и моя локальная сборка используют одну и ту же версию Maven (2.2.1).

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

Для меня это звучит как проблема с classpath.Почему бы Гудзону не заметить profiles.xml?Единственная причина, по которой я могу придумать, заключается в том, что Хадсон использует другой путь к классам, чем вы ожидаете.

Лучшая практика (по крайней мере, по моему опыту) - попытаться построить проект из командной строки на вашем CI-сервере (где работает Hudson).Если это работает, то Хадсон тоже должен работать.Если вы не настроили Maven в Гудзоне странно.

Кроме того, настройка Maven settings.xml не так уж и плоха.По крайней мере, если вы не ожидаете, что это изменится слишком сильно.Несмотря на это, это исправлено быстро.

1 голос
/ 07 января 2011

Я думаю, что лучшим решением является определение профилей непосредственно в вашем файле pom.xml как для CI, так и для общих сборок для локальных сборок.Затем разработчики могут переопределить любые настройки профиля в своем личном файле settings.xml для локальных сборок.Это дает дополнительное преимущество, заключающееся в том, что нет необходимости регистрировать файл profiles.xml, который не будет работать для разработчиков, вынуждая их изменять этот версионный файл и не забывать вносить изменения.Это также имеет дополнительное преимущество, поскольку ваша сборка не зависит от устаревшей функции Maven.В конце концов, я бы не стал рассчитывать на поведение устаревшей функции.Надеемся, что это элегантное решение, которое использует идеи из того, что, как вы знаете, уже работает.

...