У нас есть три артефакта:
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 работать в следующей последовательности:
- Сборка всех проектов в порядке зависимости.
- Изменить common.jar (скажем, добавить новый метод класса)
- Измените классы internal.war таким образом, чтобы они зависели от времени компиляции в зависимости от изменений, сделанных в шаге 2.
- Зафиксируйте оба изменения, запустив сборки Hudson.
- Сборка Internal.war завершается неудачно, поскольку не удается найти символы, добавленные на шаге 2.
Каким-то образом сборка на шаге 5. использует старую версию common.jar и не работает из-за этого.
Номер версии common.jar не меняется, скажем, для целей этого примера это 1.0.0-SNAPSHOT.
Если я изменю номер версии common.jar, сборка работает. (Предположительно, потому что существует только один выпуск по номеру выпуска).
Теперь, что может быть причиной этого использования старых артефактов в сборках Hudson?
Мы запускаем сборки maven на Hudson с командой "clean package -e -X -U"
Проверено "Развертывание артефактов в хранилище Maven".