2011-09-23 142 views
10

我想知道是否有可能以類似的語法指定Maven的內存邊界指定Maven的內存參數:無需設置MAVEN_OPTS環境變量

mvn -Dtest=FooTest -DXmx=512M clean test 

我試過幾個變化,至今未果。
我知道MAVEN_OPTS環境變量,但我想避免這種情況。

與上述問題相關,很高興知道是否有可能以類似的方式指定插件的內存行爲,以便它使用重寫的內存量分配jvm(最終覆蓋pom插件配置中的<argLine>參數(如果存在))

回答

7

您可以配置surefire插件以使用更多內存。看看 Strange Maven out of memory error

更新: 如果你想設置從參數命令行拿在Maven安裝目錄下的{{mvn.bat}}(或{{MVN}} shell腳本)看看。它與命令行中指定的其他選項一起使用。

下一種可能性是設置surefire插件並使用命令行中指定的屬性,例如, mvn ... -Dram=512

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
     <forkMode>once</forkMode> 
     <argLine>-Xms${ram}m -Xmx${ram}m</argLine> 
    </configuration> 
</plugin> 
+1

你好阿姆拉,謝謝你的回覆。正如我在文章中提到的,我有興趣將內存設置指定爲mvn命令的參數。如果可能的話,對於mvn本身或者surfire插件。歡呼聲 – Ghiro

+0

看到我的更新... – amra

31

要指定最大內存(不通過MAVEN_OPTS原先要求的),你可以做到以下幾點:

mvn clean install -DargLine="-Xmx1524m" 
+3

這實際上並非如此。如果你使用[jvisualvm](https://visualvm.java.net/),你甚至已經在你的JDK中(在bin目錄下),你會發現這個參數並不適用於JVM,而是作爲一個系統屬性argLine = -Xmx1524m。 – user2241895

+0

這不是真的,'argLine'隻影響爲運行測試而創建的分支進程(Surefire),而不是用於編譯等的實際進程。而MAVEN_OPTS'影響所有內容。 – Kidburla