虽然不是直接的编程问题,但与Maven和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 传递参数。例如,要将 Maven 整个运行的内存量增加到 1024 Meg,请使用: MAVEN_OPTS=-Xmx1024m "
问题: Maven 如何设置 JVM 属性? 为什么 Maven 需要 JVM?它只是构建 war ,只有当你将 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) Maven是否会启动JVM并在使用后停止它?如果它在使用后停止,设置更多堆大小有什么意义?
- 是的,Maven 会启动 JVM,并在使用后停止。运行时需要JVM。就像如果 Maven 构建需要大量内存 [比如如果你进行 XML 处理] 那么 使用 MAVEN_OPTS 设置堆内存会很有帮助。
请澄清我的理解,尤其是第二个问题
最佳答案
mvn
是一个 shell 脚本/批处理文件,它使用MAVEN_OPTS
来执行您期望的操作。- Maven 是 Java。 Maven 任务是用 Java 编写的。
- ...? 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 文档?
关于java - Maven和JVM的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385419/