цели плагина maven

Я разрабатываю плагин Maven, который будет обеспечивать 5 целей. Вы можете выполнить цели 1–4 индивидуально или выполнить цель 5, при которой цели 1–4 будут выполняться последовательно. Я искал способ повторно использовать (т.е. вызывать) одну цель Maven из другой, но еще не нашел.

Конечно, я мог бы просто делегировать targetX классу X для большей части его функциональности, а затем, когда цель5 вызывается, он делегирует Class1 ... Class4, но это по-прежнему связано с определенным дублированием кода с точки зрения указания, чтения и проверки. конфигурация каждой цели.

Есть ли способ повторно использовать одну цель в другой?

Спасибо дон


person Dónal    schedule 04.06.2010    source источник
comment
Поможет ли это решение? stackoverflow.com/questions/1393691/   -  person JoseK    schedule 04.06.2010
comment
@josek - нет, мой вопрос о том, как программно вызвать цель из исходного кода другой цели плагина   -  person Dónal    schedule 04.06.2010


Ответы (3)


Есть ли способ повторно использовать одну цель в другой?

AFAIK, Maven API не предлагает никаких возможностей для этого, потому что люди Maven не хотят продвигать практику, ведущую к сильной связи между плагинами, которая считается плохой. Вы найдете информацию об этом в Re: вызов плагина в другом плагине?.

При этом в сообщении в блоге показано как можно создать экземпляр Mojo и использовать отражение, чтобы установить его поле перед вызовом execute.

Вы также можете проверить библиотеку mojo-executor.

Но обязательно прочтите упомянутую ветку, я считаю это важным.

person Pascal Thivent    schedule 04.06.2010

Конечно, я мог бы просто делегировать targetX классу X для большей части его функциональности, а затем, когда цель5 вызывается, он делегирует класс Class1 ... Class4, но это все еще включает в себя некоторое дублирование кода с точки зрения указания, чтения и проверки. конфигурация каждой цели.

Так почему бы не предоставить общий класс для других ваших классов с целью проверки целей? Я думаю, что проще всего сделать так, чтобы одна цель вызывала в вашем коде другую.

person matt b    schedule 04.06.2010
comment
Но моя проблема в том, что я не знаю, как вызвать одну цель из другой. - person Dónal; 04.06.2010
comment
Я говорю о том, что вы должны просто вызвать код, который обрабатывает goal1, из кода, который обрабатывает code5. - person matt b; 04.06.2010

Похоже, что «мышление Maven» заключается в том, что за настройку отвечает автор pom.xml, а не разработчик Mojo. Если вы переместите всю свою конфигурацию и тому подобное в общий базовый класс, вы в конечном итоге обойдете этот механизм.

Это похоже на то, что вы хотите, чтобы это были подпроекты: каждая из ваших целей 1–4 живет в своем собственном проекте, или вы можете выполнить цель 5, которая запускает их все. Возможно, это поможет ?: http://i-proving.com/space/Technologies/Maven/Maven+Recipes/Split+Your+Project+Into+Sub-Projects

Если ваши исходные деревья плохо разделяются по линиям проекта, возможно, вы сможете что-то сделать с профилями (хотя я этого не пробовал). Ознакомьтесь с принятым ответом здесь: Как привязать плагин цель к другой цели плагина.

person Curtis    schedule 11.06.2010