Maven与JVM的关系

Maven and JVM relation

虽然不是直接的编程问题,但它与 Maven 和 JVM 有关

当我经历这个时 link - http://maven.apache.org/archives/maven-1.x/reference/command-line.html

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

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

它说 MAVEN_OPTS

"使用MAVEN_OPTS环境变量指定附加选项。它用于在运行ning Maven时将参数传递给Java VM。例如,到将整个 运行 Maven 的内存量增加到 1024 Meg,使用: MAVEN_OPTS=-Xmx1024m "

问题: Maven 如何设置 JVM 属性? 为什么 Maven 需要 JVM?它只是构建 war 并且仅当您将 WAR 部署到 appserver.right 时才需要 JVM? Maven是否启动JVM并在使用后停止?如果它在使用后停止,设置更多堆大小有什么意义?

我研究后的理解:

(1) How/Why Maven可以设置JVM属性吗?

(2) 为什么Maven需要JVM? Maven 只是一个构建工具..

(3) Maven是否启动JVM并在使用后停止?如果它在使用后停止,设置更多堆大小有什么意义?

请具体说明我的理解,尤其是第二个问题

  1. mvn 是一个 shell script/batch 文件,它使用 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} "$@"

注意:为什么要阅读 Maven 1 文档?

Maven 是用 Java 编写的程序。该程序用于编译文件、复制文件、制作 jar 文件以及许多其他任务。与任何 Java 程序一样,它需要一个 JVM 才能 运行。和任何 Java 程序一样,它使用内存。和任何使用内存的 Java 程序一样,如果您没有使用足够的内存启动 JVM,它可能会导致内存错误。

mvn 能够设置 JVM 属性,因为它是一个启动 Java 程序的简单 shell 脚本:Maven。

是的,一旦 mvn 退出,它开始 运行 它需要 运行 的所有任务的 JVM 也会退出。