当前位置:  开发笔记 > 编程语言 > 正文

查找Maven使用的Java选项

如何解决《查找Maven使用的Java选项》经验,为你挑选了1个好方法。

我怎样才能找到Maven正在使用哪些Java选项(Xmx,Xms,Xss等)?

我发现设置它们的方法是通过环境MAVEN_OPTS.现在我想要一种方法来确保它获得正确的设置.

编辑:我认为这与这个问题不同,因为我不想看到环境变量的价值.我更愿意看看Maven实际使用了哪些设置,无论是来自env var,settings.xml还是其他方法.

编辑2:我也对为Maven构建设置Java选项的其他方法感兴趣



1> A_Di-Matteo..:

您可以在不同的点和级别(全局或通过插件配置)为Maven设置Java选项:

插件配置:仅用于编译
使用Maven编译器插件配置来编译应用程序代码和测试代码,您可以通过compileArgs配置条目设置所需的Xmx,Xms,Xss选项,可用于编译和testCompile目标.这里有一个官方的例子,也有像这样的其他SO答案.
下面的第三点也显示了一个例子.

插件配置:仅用于测试执行
使用Maven Surefire插件配置执行测试,您可以通过测试目标的argLine配置条目设置在运行时使用的所需Java选项.这里有一个官方的例子. 下面的第三点也显示了一个例子.

插件配置:通过属性(和配置文件),
您可以结合上面两个选项(在常见的Java选项的情况下)的属性值传递给双方compileArgsargLine配置条目或具有每个配置的不同属性(根据您的需要).


      -Xmx256M


[...]

  [...]
  
    
       org.apache.maven.plugins
       maven-compiler-plugin
       3.3
       
            ${jvm.options}
       
    

    
       org.apache.maven.plugins
       maven-surefire-plugin
       2.19.1
       
            ${jvm.options}
       
     
   
   [...]

[...]

使用属性还为您提供了两个额外的优势(在集中化之上):您可以使用配置文件根据不同的所需行为对其进行个性化(例如在此SO答案中),您也可以通过命令行覆盖它们,例如:

mvn clean install -Djvm.options=-Xmx512

全局/项目配置:选项文件
从Maven 3.3.1开始,您可以在每个项目的文件中指定选项.mvn/jvm.config.它是MAVEN_OPTS的替代品,范围更窄(每个项目).但是,由于它是一个新的Maven功能,人们应该意识到它,否则可能会影响故障排除和维护.

全局/环境配置:MAVEN_OPTS
Maven 众所周知的环境变量,用于设置全局执行选项,但适用于共享该环境的所有Maven构建(即每个已登录的用户).

使用-X选项(启用调试)运行Maven时,您将在构建过程中使用以下输出:

[DEBUG] properties used {java.vendor=Oracle Corporation, ... , env.MAVEN_OPTS=-Xmx256M, ...

更新
毕竟,执行的mvn命令是OS脚本.在Windows中查看它,我发现使用该MAVEN_BATCH_ECHO选项的可能性,如果启用(值设置为on),将回显脚本执行的任何命令,同样也调用java命令,在那里你可以看到你的选项(the MAVEN_OPTS)与传递给它的完整参数列表一起正确选取.

这是我在Windows上测试的执行:

set MAVEN_BATCH_ECHO=on
set MAVEN_OPTS=-Xmx256M
mvn compile > output.txt  

注意:output.txt它将包含相当多的文本,提供构建输出和附加的echos执行.作为其中的一部分,它提供了:

>"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脚本没有提供此选项,那么您只需将其添加到脚本中(执行echo前的一个简单java,显示命令,也就足够了).
您可以在bin子文件夹下的maven安装文件夹中找到maven脚本.


Update2
此外,由于Maven毕竟是一个Java工具,你可以从它的脚本中看到它调用java命令,你可以通过稍微更改Maven脚本并使用应该使用的命令来查看本SO答案中建议的所有可用选项.jinfo真的给你答案根据其他SO答案.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有