2012-05-02 6 views
2

surefire와 같은 플러그인에는 플러그인의 특정 목표가 실행되는 JVM으로 전달되는 "argLine"구성 매개 변수가 있습니다. 필자가 이해하는 것처럼, 기본적으로 메이븐 플러그인은 포크되어 별도의 JVM에서 실행됩니다 (제발 내가 틀렸다면 수정하십시오). VM 인수를 Maven 플러그인 jibx에 전달하는 방법을 알아 내려고했지만보다 쉽게 ​​/ 선언적으로 (Util 클래스를 통해)이 작업을 수행하도록 구성 할 수 있는지 여부는 알 수 없습니다. 확실한 점은, booterclient에는이 클래스를 처리하는 것으로 보이는 유틸리티 클래스가 있지만 기능은 플러그인 전반에 걸쳐 보편적 인 것처럼 보입니다. 맞습니까? 따라서 Mojo/Plexus가 배관 코드를 작성하지 않고도 쉽게 추가 할 수 있는지에 대해 궁금해 할 것입니다. 다시 한 번, 제 이해가 정확하지 않은 경우 제발 수정하십시오JVM 선택 항목을 Maven 플러그인에 전달

미리 감사드립니다.

답변

0

실제 Maven 플러그인 클래스는 Maven과 동일한 JVM에서 실행됩니다.

Maven 플러그인이 별도의 도구를 래핑하는 경우, Maven 플러그인이 프로세스를 포크하는지 여부에 관계없이 Maven 플러그인 작성 방법에 따라 다릅니다.

예를 들어 Cobertura Maven Plugin은 Cobertura 일을 처리하는 과정을 포크합니다. 이 포크에는 기술적 인 이유가 없습니다. Cobertura의 경우 JVM을 포크하는 것은 Cobertura 도구 자체의 GPL 라이센스를 해결하는 것입니다.

Surefire 플러그인은 일반적으로 단위 테스트 실행 프로세스를 포크하는 것으로 나타났습니다. 포크를 기술적으로 요구하지는 않지만 (forkMode=never 참조), 포크가 필요한 JVM의 일부분이 제대로 분리되지 않았기 때문에 좋은 이유가 있습니다. 글로벌 시스템 속성.

질문에 플러그인을 찾으십시오. you can see that it is just invoking the JIBX's main method directly. 즉, JVM을 전혀 포크로 처리하지 않습니다. 원하는 JVM 옵션이있는 경우 MAVEN_OPTS 환경 변수를 사용하여 환경 변수를 지정해야합니다 (부작용으로 Maven에 대해 전역 변수를 지정하는 것을 잊어 버린 경우 예상대로 작동하지 않음).)

나는이 문제를 해결하기 위해 포크 된 JVM을위한 JVM 옵션을 받아들이고 받아들이는 플러그인에 대한 패치를 제안해야한다고 생각한다.

관련 문제