我知道像surefire这样的插件有一个"argLine“配置参数,它们会将这个参数传递给运行插件特定目标的JVM。据我所知,默认情况下,maven插件是在单独的JVM中派生和运行的(如果我错了,请纠正我)。我正在试图弄清楚如何将VM参数传递给maven插件jibx,但不知道是否有更简单的/声明式方式(或通过Util类)可以配置它来实现这一点。在surefire中,booterclient中有一些实用程序类似乎正在处理这个问题,但该功能似乎是跨插件通用的,对吧?因此,我想知道是否有一些来自Mojo/Plexus的支持,可以轻松地添加此功能,而无需编写一堆管道代码。再次,如果我的理解不正确,请纠正我
提前感谢!
发布于 2012-08-21 19:26:06
实际的Maven插件类在与Maven相同的JVM中运行。
Maven插件在哪里包装一个单独的工具,这取决于Maven插件是如何编写的,无论它是否派生一个进程。
例如,Cobertura Maven插件派生了一个进程来完成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选项的插件推荐一个补丁
https://stackoverflow.com/questions/10408308
复制相似问题