Выполнить цель на родителя после завершения детей - PullRequest
2 голосов
/ 14 ноября 2009

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 18 ноября 2009

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

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

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

2 голосов
/ 14 ноября 2009

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

1 голос
/ 16 ноября 2009

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

0 голосов
/ 16 ноября 2009

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

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

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

...