查找Maven使用的Java选项
我如何找到Maven正在使用哪些Java选项(Xmx、Xms、Xss等) 我发现设置它们的一种方法是通过environment MAVEN_OPTS。现在我想要一种方法来确保它得到了正确的设置 编辑:我认为这与不同,因为我不想看到环境变量的值。我更希望看到Maven实际使用了哪些设置,无论是来自env var、settings.xml还是其他方式查找Maven使用的Java选项,java,maven,maven-3,jvm-arguments,java-opts,Java,Maven,Maven 3,Jvm Arguments,Java Opts,我如何找到Maven正在使用哪些Java选项(Xmx、Xms、Xss等) 我发现设置它们的一种方法是通过environment MAVEN_OPTS。现在我想要一种方法来确保它得到了正确的设置 编辑:我认为这与不同,因为我不想看到环境变量的值。我更希望看到Maven实际使用了哪些设置,无论是来自env var、settings.xml还是其他方式 EDIT2:我还对为Maven构建设置Java选项的其他方法感兴趣也许用详细的调试输出(-debug,我想?)启动Maven会有帮助。否则,只需执行p
EDIT2:我还对为Maven构建设置Java选项的其他方法感兴趣也许用详细的调试输出(-debug,我想?)启动Maven会有帮助。否则,只需执行ps aux | grep java并检查流程的参数(假设为*nix)。您可以在不同的点和级别(全局或通过插件配置)为Maven设置java选项: 插件配置:仅用于编译
使用编译应用程序代码和测试代码的配置,您可以通过
compileArgs
configuration条目设置所需的Xmx、Xms、Xss选项,该条目可用于和目标。一个官方的例子是可用的,其他答案如。下面第三点也显示了一个示例 插件配置:仅用于测试执行
使用测试执行的配置,您可以通过目标的
argLine
configuration条目设置运行时使用的所需Java选项。官方示例可用。下面第三点也显示了一个示例 插件配置:通过属性(和配置文件)
您可以将上述两个选项(如果是常见Java选项)组合为属性值,以传递给
compileArgs
和argLine
配置条目,或者每个配置具有不同的属性(根据您的需要)
全局/项目配置:选项文件
自Maven 3.3.1以来,您可以在每个项目的.mvn/jvm.config
文件中设置选项。它是MAVEN_选项的替代方案,并且范围更窄(每个项目)。然而,由于它是一个新的Maven特性,人们应该意识到它,否则故障排除和维护可能会受到影响
全局/环境配置:MAVEN_选择
Maven环境变量设置全局执行选项,但应用于共享该环境的所有Maven构建(即每个登录用户)
当使用-X
选项(已启用调试)运行Maven时,将有以下输出作为构建的一部分:
[DEBUG] properties used {java.vendor=Oracle Corporation, ... , env.MAVEN_OPTS=-Xmx256M, ...
更新
毕竟,执行的
mvn
命令是一个操作系统脚本。在Windows中查看后,我发现可以使用MAVEN\u BATCH\u ECHO
选项,如果启用该选项(值设置为on
),将回显脚本执行的任何命令,因此也可以调用java
命令,您可以查看您的选项(MAVEN\u选择
)与传递给它的完整参数列表一起正确拾取
下面是我在Windows上测试的一个执行:
set MAVEN_BATCH_ECHO=on
set MAVEN_OPTS=-Xmx256M
mvn compile > output.txt
注意:output.txt
将包含大量文本,提供构建输出和额外的echo
s执行。作为其中的一部分,它规定:
>"path_to_\jdk1.7\bin\java.exe" -Xmx256M -classpath "path_to\apache-maven-3.1.1\bin\..\boot\plexus-classworlds-2.5.1.jar" "-Dclassworlds.conf=path_to\apache-maven-3.1.1\bin\..\bin\m2.conf" "-Dmaven.home=path_to\apache-maven-3.1.1\bin\.." org.codehaus.plexus.classworlds.launcher.Launcher compile
如您所见,-Xmx256M
选项选择正确。如果其他操作系统的maven脚本不提供此选项,那么您可以简单地将其添加到脚本中(在执行java
之前,显示命令的简单echo
也就足够了)。您可以在maven安装文件夹中的
bin
子文件夹下找到maven脚本
更新2
此外,由于Maven毕竟是一个Java工具,而且正如您从其脚本中看到的,它调用Java命令,您可以通过稍微更改Maven脚本并使用
jinfo
命令来查看本文中建议的所有可用选项,该命令将根据另一个命令真正为您提供答案。可能的重复项您是否只对查看如何检查Maven使用了哪些选项或其他相同设置方式感兴趣选项?是的,我也对其他方式感兴趣,谢谢。我更新了我的答案,在底部检查,我找到了一种方法来检查选项是否被正确选择。希望这能有所帮助。此外,您可能希望它来自Java,它由Maven(在Java中开发)调用,因此结合我提出的方法应该会给您进一步的帮助。我会相应地更新我的答案
set MAVEN_BATCH_ECHO=on
set MAVEN_OPTS=-Xmx256M
mvn compile > output.txt
>"path_to_\jdk1.7\bin\java.exe" -Xmx256M -classpath "path_to\apache-maven-3.1.1\bin\..\boot\plexus-classworlds-2.5.1.jar" "-Dclassworlds.conf=path_to\apache-maven-3.1.1\bin\..\bin\m2.conf" "-Dmaven.home=path_to\apache-maven-3.1.1\bin\.." org.codehaus.plexus.classworlds.launcher.Launcher compile