2009-11-14 2 views
2

У меня есть мультимодульный проект maven (несколько уровней вложенности). Обычно, когда я выполняю сборку maven (например, mvn install или что-то еще), maven будет запускать все цели для родительского проекта до, продолжая работу с детьми.Выполнение цели для родителя после завершения детей

Я хочу, чтобы можно было определить цель, которая выполняется для родителя, но только после того, как все дети были обработаны. Есть ли способ сделать это?

В частности, я хочу выполнить команду exec:exec, которая повторяет файловую систему, которая ищет файлы результатов теста и копирует их в центральное место для агрегирования с помощью нашей системы CI (cruisecontrol). Итак, альтернативные решения этой проблемы также приветствуются :)

ОБНОВЛЕНИЕ: Я забыл упомянуть одно требование: мне нужна цель exec для запуска независимо от того, успешно ли построена или нет.

+0

Что касается обновлений, возможно, это не несет ответственности за инструмент CI? –

ответ

2

Основываясь на других ответах и ​​моем собственном последующем исследовании, это не похоже на то, что я описал, возможно с Maven.

Тем не менее, я смог решить свою проблему, хотя решение относится к cruisecontrol. В принципе, я привязал цель exec к фазе предварительного участка, а затем задал предварительный сайт как sitegoal в моей конфигурации cruisecontrol. sitegoal работает после главной цели и делает это независимо от того, успешно ли выполнена сборка или нет.

Я полагаю, что другие системы CI предлагают нечто подобное.

2

Я не думаю, что возможно сделать что-то от родителя в конце сборки нескольких модулей (это не так, как все работает). Однако вы подумали о добавлении модуля (который может быть типа pom) в зависимости от всех дочерних проектов (так это будет «последний» проект в сборке реактора) и запустить exec:exec в этом модуле? Возможно, я что-то упускаю, не понимаю, почему это не сработает.

+0

Это работает в основных ситуациях, но не выполняется, если модули являются, например, Весенние загрузочные приложения. Те не делают хороших зависимостей. – Zajo

0

Почему бы не сделать шаг копирования антрана, прикрепленный к фазе проверки каждого подпроекта, чтобы скопировать результаты до родительского местоположения. Затем вы могли бы выполнить аналогичный шаг в родительском агрегаторе для агрегации CI.

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

Мы используем технику для создания ebb-заглушек websphere для банки, среди прочего.

1

Звучит скорее как плагин отчетности. Создание плагина Maven на самом деле довольно просто.

Смежные вопросы