2015-09-03 72 views
0

雖然不是直接的編程問題,它雖然我正想通過這個鏈接是有關Maven和JVMMaven和JVM關係

- http://maven.apache.org/archives/maven-1.x/reference/command-line.html

的鏈接更新:https://wiki.openstack.org/wiki/Documentation/Troubleshooting

https://maven.apache.org/docs/3.0/release-notes.html

它說的大約是MAVEN_OPTS

「使用MAVEN_OPTS環境變量指定其他選項。它用於在運行Maven時將參數傳遞給Java VM。例如,增加的內存量爲1024梅格對Maven的整個運行過程中,使用: MAVEN_OPTS = -Xmx1024m「

問題: 的Maven如何能夠設置JVM屬性 爲什麼Maven需要JVM嗎?它只是構建戰爭,只有在將WAR部署到appserver時才需要JVM。 Maven是否啓動JVM並在使用後停止它?如果它在使用後停止,那麼在設置更多堆時有什麼意義大小?

我的研究經過了解:

(1) Maven如何以及爲何能夠設置JVM屬性?

  • Maven將能夠使用MAVEN_OPTS設置JVM屬性。 它的參數傳遞到JVM對Maven
  • 的該運行

(2)爲什麼Maven的需要JVM? Maven只是一個構建工具..

  • Maven必須構建WAR文件,對嗎?要構建WAR文件,您需要編譯代碼 ,有時運行測試用例。爲了編譯代碼,你需要JVM。運行測試用例需要JVM。 當我們進行mvn clean部署時,不知道我們還需要什麼JVM。 [例如javac的傳遞JVM參數否則:javac -d build/classes -classpath ... -J-Xms256m -J-Xmx1024m java-source-files]

(3) DOES Maven的啓動JVM並在使用後停止嗎?如果它在使用後停止,那麼設置更多堆大小有什麼意義?

  • 是的,Maven啓動JVM並在其使用後停止。運行期間需要JVM。就像Maven構建需要大量內存[就像執行XML處理一樣],那麼使用MAVEN_OPTS設置堆內存將會很有幫助。

請在我的理解澄清尤其是對第二個問題

+0

停止閱讀有關Maven 1 ...閱讀關於Maven 3 ...但Maven本身使用JVM運行,導致它是Java程序。 – khmarbaise

+0

當然,非常感謝,更新鏈接 – spiderman

回答

1
  1. mvn是一個shell腳本/批處理文件,它使用MAVEN_OPTS做你所期望的東西。
  2. Maven是Java。 Maven任務是用Java編寫的。
  3. ...? Maven做了很多,其中一些使用內存。這只是一個Java程序。當它結束時,運行它的JVM也結束。

爲了進一步澄清1點,這是在腳本的最後會發生什麼:

exec "$JAVACMD" \ 
    $MAVEN_OPTS \ 
    -classpath "${M2_HOME}"/boot/plexus-classworlds-*.jar \ 
    "-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \ 
    "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ 
    ${CLASSWORLDS_LAUNCHER} "[email protected]" 

注:爲什麼讀Maven的1個文檔?

+0

關於注意:我在Maven中搜索內存相關的東西,並且遇到了Maven 1 doc鏈接。 – spiderman

1

Maven是一個用Java編寫的程序。這個程序用於編譯文件,複製文件,製作jar文件以及其他一些任務。作爲任何Java程序,它都需要運行一個JVM。和任何使用內存的Java程序一樣。和任何使用內存的Java程序一樣,如果您沒有足夠的內存啓動JVM,它可能會導致內存錯誤。

mvn能夠設置JVM屬性,因爲它是一個啓動Java程序的簡單shell腳本:Maven。

是的,一旦mvn退出,JVM就開始運行它所需要運行的所有任務。

+0

OMG,我忘記了Maven本身就是一個工具及其使用Java編寫的程序的基礎,並且運行該程序時,它需要JVM ..但是您的答案無論如何都會給我更多的見解。 – spiderman