Program Club

Plexus 구성 요소에서 현재 MavenSession 또는 MavenExecutionRequest를 가져 오는 방법

proclub 2020. 12. 13. 09:54
반응형

Plexus 구성 요소에서 현재 MavenSession 또는 MavenExecutionRequest를 가져 오는 방법


내가 만들고 싶은 여러 Mojo에 대한 공통 논리를 수용하기 위해 Plexus 구성 요소를 만들었습니다. localRepositoryMojo (및 테스트 사례)와 같은 정보 와 프로젝트 를 전달할 수있었습니다 .

Mojo에서 매개 변수로 전달할 필요없이 구성 요소 내에서 MavenSession또는 MavenExecutionRequest구성 요소 를 가져 오는 방법이 있는지 궁금합니다 . 내 구성 요소가 Maven Mojo에서 실행된다는 것을 알고 있습니다.

이 경우 Maven 2를 사용하고 있습니다.


나는 그것이 있다고 믿지 않으며 그것이 좋은 생각이라고 생각하지도 않습니다.

내 이해에 따르면, 당신이 달성하고자하는 것은 여러 모조에 사용될 커먼즈와 같은 구성 요소를 갖는 것입니다. 이를 위해서는 현재 Maven 세션이 전달되고 나중에 값을 다시 전달하는 데 사용되어야합니다.

그러나 Maven이 작동하는 방식은 거의 컨테이너와 같은 환경에서 플러그인에서 목표를 실행한다는 것입니다. 각 플러그인은에 정의 된대로 특정 Maven 단계 내에서 작동 할 수 <executions />있습니다. 이 메이븐, 확인, 배포 등 등 부름을 구축 테스트의 복잡성을 분리 할 수 있습니다 mvn clean install, 내가 실수 있어요 않는 한, 두 개의 별도의 실행, 하나는 실행하는 것입니다 clean 빌드 라이프 사이클 에 의해 다음을 install.

따라서 MavenSession및 후속 MavenExecutionRequest이 이전 호출에서 사용 된 동일한 인스턴스를 나타낸다고 가정하는 것은 안전하지 않습니다 . clean논리가 새 세션에서 유지되지 않아야하는 별도의 호출입니다.

그래서, 제가 본질적으로 말하고있는 것은, 공통 신경총 구성 요소를 갖는 것이 좋은 관행 인 반면, 특히 모조 전반에 걸쳐 일관성을 유지하기 위해서는 매번 적절한 세션을 제공하는 것이 올바른 관행 (거의 ioc )입니다.

그것이 당신이 찾고있는 답 이길 바랍니다. 다소 길지만 세션을 제공해야하는 이유를 이해하려면 Maven.

참고 URL : https://stackoverflow.com/questions/3736576/how-to-get-the-current-mavensession-or-mavenexecutionrequest-from-a-plexus-compo

반응형