Как получить текущий 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
,