Maven配置JVM参数

2023/6/17 Maven
  1. Maven运行配置JVM参数

    Windows下添加环境变量MAVEN_OPTS="-Xms1024m -Xmx1024m -Xss1m" Linux下可修改.profile或者.bash_profile文件,并做如下设置: export MAVEN_OPTS="-Xms1024m -Xmx1024m -Xss1m" (注意:这里需要使用双引号或者单引号) 注意:通过MAVEN_OPTS方式设置的JVM参数对于fork出的子进程是无效的,所以对于通过mvn test来运行测试用例,需要单独配置。

  2. 为Maven fork出的新的子进程配置JVM参数(比如通过命令行mvn test运行测试用例时)

    Maven运行测试用例时,是通过调用maven-surefire-plugin插件并fork一个子进程来执行用例的,这个插件的surefire:test命令会默认绑定Maven执行的test阶段mvn test,可以在surefire插件的配置中添加JVM参数。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
              <!--
              pretest:每一个测试创建一个新进程,为每个测试创建新的JVM是单独测试的最彻底方式,但也是最慢的,不适合hudson上持续回归。
              once:在一个进程中进行所有测试。once为默认设置,在Hudson上持续回归时建议使用默认设置。
              always:在一个进程中并行的运行脚本,Junit4.7以上版本才可以使用,surefire的版本要在2.6以上提供这个功能,其中 threadCount:执行时,指定可分配的线程数量。只和参数parallel配合使用有效。默认:5。
              -->
            <forkMode>pertest</forkMode>
            <!-- 配置JVM参数 -->
            <argLine>-Xms1024m -Xmx1024m -Xss1m</argLine>
            <systemPropertyVariables>
                <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
                <forkedProcessTimeoutInSeconds>3600</forkedProcessTimeoutInSeconds>
                <java.awt.headless>true</java.awt.headless>
            </systemPropertyVariables>
            <trimStackTrace>false</trimStackTrace>
            <skipTests>true</skipTests>
        </configuration>
    </plugin>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    测试指定类或方法:

    # 测试指定类
    mvn -Dtest=FileInputStreamTest test
    # 测试指定方法(只能支持Junit 4.x和TestNG)
    mvn -Dtest=FileInputStreamTest#test_delete_01 test
    
    1
    2
    3
    4