Как получить текущий MavenSession или MavenExecutionRequest из компонента Plexus

Я создал компонент Plexus для размещения общей логики для нескольких моджо, которые я хочу создать. Я был в состоянии передать информацию, как localRepository и проект из Mojo (и тестовые случаи).

Мне было интересно, если есть способ получить MavenSession или же MavenExecutionRequest из компонента без необходимости передавать их как параметры из Mojo. Я знаю, что мой компонент будет работать из Maven Mojo.

Я использую Maven 2 в этом случае.

1 ответ

Я не верю, что есть, и не думаю, что это хорошая идея.

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

Однако Maven работает так, что он запускает цели из плагинов в почти контейнерной среде. Каждый плагин может действовать в пределах определенной фазы Maven, как это определено <executions />, Это позволяет Maven отделить сложности построения, тестирования, проверки, развертывания и т. Д. И т. Д. mvn clean installЕсли я не ошибаюсь, это два отдельных исполнения, одно для запуска clean построить жизненный цикл, а затем install,

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

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

Я надеюсь, что это ответ, который вы ищете. Довольно долго, но чтобы понять, почему вам нужно предоставить сессию, подумайте Maven,

Другие вопросы по тегам