gpt4 book ai didi

maven - 将JVM args传递给maven surefire,条件是构建Java版本吗?

转载 作者:行者123 更新时间:2023-12-04 19:46:15 24 4
gpt4 key购买 nike

仅当为Java 1.7 配置argLine时,才可以将<jdk.version>1.7</jdk.version>配置传递给maven-surefire插件,但是当用户更改要为Java 1.8 配置的pom.xml时,无法将其传递给maven-surefire插件吗?

原因是Java 1.8 没有permgen空间。

<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>

最佳答案

您可以根据属性值使用Maven profile activation,在这种情况下,该属性将是jdk.version,其值是JDK的不同配置。然后,配置文件将相应地更改Maven Surefire插件配置。

因此,您的pom可能如下所示:

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-project</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<jdk.version>1.7</jdk.version>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>

<profiles>
<profile>
<id>surefire-java7</id>
<activation>
<property>
<name>jdk.version</name>
<value>1.7</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>surefire-java8</id>
<activation>
<property>
<name>jdk.version</name>
<value>1.8</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>-Xmx1024m</argLine>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>

注意最后的 profiles部分。定义了两个配置文件:
  • surefire-java7:它将由1.7变量的jdk.version值激活,并将Maven Surefire插件的argLine设置为所需的值
  • surefire-java8:它将由1.8变量的jdk.version值激活,并为Maven Surefire插件设置不同的argLine

  • 还请注意,使用此配置,您甚至可以从命令行按需切换JDK版本(以及Surefire配置),如下所示:
    mvn clean test -Djdk.version=1.8

    关联的配置文件将作为构建的一部分自动激活。

    关于交叉编译的重要说明(您可能已经知道了,但以防万一),建议您仔细阅读 this question/answer

    关于maven - 将JVM args传递给maven surefire,条件是构建Java版本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36043605/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com