這兩種方法都達到了相同的最終結果,即:您的測試在分叉的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>
然而,主要的一點是,所有這些方法都功能相同所以它確實是一個偏好問題,也許與您自己項目的約定一致。