java - Maven和JVM的关系

标签 java maven jvm javac

虽然不是直接的编程问题,但与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 设置堆内存会很有帮助。

请澄清我的理解,尤其是第二个问题

最佳答案

  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} "$@"

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

关于java - Maven和JVM的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385419/

相关文章:

java - Android 将文本更改为点并应用动画

java - J2BUgzilla : java. lang.ClassNotFoundException : org. apache.xmlrpc.client.XmlRpcClientConfig

Maven 3 多模块构建尝试在多模块 POM 本身上运行目标

java - 静态方法如何获取实例详细信息或执行实例特定操作

java - 在 docker-compose 文件中指定 JVM 选项

java - Sitemesh,无法构建工厂 : com. opensymphony.module.sitemesh.factory.DefaultFactory:

Java 资源文件夹名称与其他名称

java - Maven 连接到 IDE

maven - IntelliJ IDEA 是否有像 Eclipse 和 NetBeans 一样的 "add maven dependency"向导?

java - JDK 1.7_21 的 VisualVM 配置文件崩溃并显示 "Access denied"