Maven打包SpringBoot项目,因包含SpringBootTest单元测试和Java预览版特性导致打包失败

SpringBoot启用Java预览版特性(无测试类)

pom.xml文件中加入以下配置表示启用Java预览版

 <plugin>
     <groupId>org.apache.maven.pluginsgroupId>
     <artifactId>maven-compiler-pluginartifactId>
     <configuration>
         <release>${java.version}release>
         <encoding>UTF-8encoding>
         <compilerArgs>
             <arg>--enable-previewarg>
         compilerArgs>
     configuration>
 plugin>

当项目中包含此配置,若无SpringBootTest测试类,则能正常编译打包

SpringBoot启用Java预览版特性(含测试类)

若项目中包含单元测试则需要额外配置--enable-preview参数

 <plugin>
    <groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-compiler-pluginartifactId>
    <configuration>
        <release>${java.version}release>
        <encoding>UTF-8encoding>
        <compilerArgs>
            <arg>--enable-previewarg>
        compilerArgs>
    configuration>
plugin>
<plugin>
    <groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-surefire-pluginartifactId>
    <configuration>
        <argLine>--enable-previewargLine>
    configuration>
plugin>

Maven package与单元测试的关系

Maven执行package前会执行一次test
由于spring-boot-starter-test依赖的作用域是test,SpringBootTest的单元测试类不会参与打包
但若是单元测试不通过,则会导致打包失败

你可能感兴趣的:(java,maven,spring,boot)