这两种方法都达到了相同的最终结果,即:您的测试在分叉的JVM中运行,并且该JVM的最大堆大小为1024mb。
我认为考虑牢记这些方法之间的艇员选拔的时候有:
- 将构建脚本的读/维护者熟悉JVM最大堆“原始”的指令(即
-Xmx
) ?
- 您的
<junit>
任务是否需要多个自定义JVM参数?
如果回答这两个问题是“是”,那么你有(一)需要超出通过快捷方式(如maxmemory
)支持的JVM指定参数和(b)您可以预期,任何人都读/保持你的构建脚本可以很容易地看到构建脚本中表达的'原始'JVM参数。这表明<jvmarg>
可以用于所有JVM参数。
如果答案是“否”,那么根本不需要使用<jvmarg>
,您可以坚持其友好的快捷方式:maxmemory
。
换一种方式,以下两个声明的功能相同,第一个是,也许简单:
<junit fork="true" haltonfailure="no" maxmemory="1024m">
...
</junit>
<junit fork="true" haltonfailure="no">
<jvmarg value="-Xmx1024m">
...
</junit>
相比之下,这接下来的两个声明也功能相同,但第二个是也许,在这个意义上所有 JVM ARG游戏以同样的方式表达更加一致:
<junit fork="true" haltonfailure="no" maxmemory="1024m">
<jvmarg value="-Denv=dev">
...
</junit>
<junit fork="true" haltonfailure="no">
<jvmarg value="-Denv=dev">
<jvmarg value="-Xmx1024m">
...
</junit>
然而,主要的一点是,所有这些方法都功能相同所以它确实是一个偏好问题,也许与您自己项目的约定一致。