Surefire插件3.0.0.M7未使用JDK 17的Maven Toolchain配置。

3

当我的活跃jdk是JDK8时,尝试使用Maven工具链编译Java 17项目。我设置了我的工具链,以使用JDK17来编译它,但在运行测试时,此编译失败并显示以下错误:

Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M7:test failed: java.lang.UnsupportedClassVersionError: my/source/ControllerTest has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0.

我的pom工具链配置,用于编译器和Surefire插件(版本M7):

    <properties>
           .....
           <toolchain>17</toolchain>
            <vendor>oracle</vendor>
        </properties>
  ....
....

<plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-toolchains-plugin</artifactId>
                        <configuration>
                            <jdkToolchain>
                                <version>${toolchain}</version>
                                <vendor>${vendor}</vendor>
                            </jdkToolchain>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                         <configuration>
                        <jdkToolchain>
                                <version>${toolchain}</version>
                                <vendor>${vendor}</vendor>
                        </jdkToolchain>
                    </configuration>                       
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>                         
                            <jdkToolchain>
                                <version>${toolchain}</version>
                                <vendor>${vendor}</vendor>
                            </jdkToolchain>                    
                            <argLine>@{surefireArgLine}</argLine>
                            <forkCount>1</forkCount>
                            <reuseForks>false</reuseForks>
                            <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>                       
                            
                            <includes>
                                <include>**/**Test.java</include>
                            </includes>
                           
                        </config>

为什么我的工具链配置没有被surefire识别?编译本身没有问题,但是surefire测试阶段失败了。感谢您的帮助。

2个回答

1

如果我使用Surefire插件2.22触发“mvn test”测试,我可以使工具链正常工作。但是,如果使用surefire:test触发测试,则无法检测到工具链。

我一直在尝试让它在Surefire 3上工作,但我一直遇到您发布的相同问题。如果您找到了在Surefire 3中使其工作的方法,请告诉我。


1

实际上,我发现将<reuseForks>false</reuseForks>移除后,它就能正常工作了。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接