surefire 插件 3.0.0.M7 未拾取 jdk17 的 Maven 工具链配置

问题描述 投票:0回答:2

尝试使用maven工具链编译Java 17项目,而我的活动jdk是JDK8。我设置了我的工具链,以便他们使用 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 拾取。编译本身没问题,但万无一失的测试阶段失败了。感谢您的帮助

maven-surefire-plugin toolchain
2个回答
1
投票

如果我在 Surefire 插件 2.22 上使用“mvn test”触发测试,我就能使工具链正常工作。但如果使用 Surefire:test 触发测试,它不会获取工具链。

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


0
投票

尝试删除

forkCount
选项,它似乎会破坏工具链查找。

问题跟踪器中有一些与此相关的问题:https://issues.apache.org/jira/browse/SUREFIRE-720?jql=text%20~%20%22forkCount%20toolchain%22

© www.soinside.com 2019 - 2024. All rights reserved.