使用Spring Boot Maven插件时,修改Java编译版本为1.7失败如何解决?
嘿,我来帮你搞定这个问题!你遇到的情况其实挺常见的——只配置了source为1.7,可Maven还是用1.5编译,这是因为光设source不够,咱们得把编译插件的参数配全,同时还要确保spring-boot-maven-plugin能正确把依赖打进最终Jar包。下面一步步来:
1. 修正Java编译版本配置
Maven的maven-compiler-plugin在旧版本里,默认会把生成字节码的target版本设为1.5,哪怕你指定了source是1.7。所以必须显式同时配置source和target,才能确保编译出来的代码是Java 1.7兼容的。把这段配置加到你的pom.xml里:
<build> <sourceDirectory>src</sourceDirectory> <pluginManagement> <plugins> <!-- 配置编译插件,锁定Java 1.7版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <!-- 选一个兼容Java 1.7的插件版本 --> <configuration> <source>1.7</source> <target>1.7</target> <encoding>UTF-8</encoding> <!-- 顺手加上编码配置,避免乱码问题 --> </configuration> </plugin> <!-- 这里放你原有的其他插件配置 --> </plugins> </pluginManagement> </build>
2. 配置spring-boot-maven-plugin打包依赖
要把所有依赖Jar打进最终生成的Jar包(也就是常说的fat jar),spring-boot-maven-plugin的repackage目标正好能帮你完成这个工作。只需确保插件绑定到Maven的package阶段,配置如下:
<build> <!-- 保留上面的sourceDirectory和编译插件配置 --> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.1.18.RELEASE</version> <!-- 注意:Spring Boot 2.1.x是支持Java 1.7的最后一个大版本 --> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
3. 验证配置是否生效
- 验证编译版本:运行
mvn compile -X,在日志里找类似这样的内容,如果能看到-source 1.7和-target 1.7,就说明编译版本配置正确了:[DEBUG] Command line options: -d /你的项目路径/target/classes -classpath ... -source 1.7 -target 1.7 -encoding UTF-8 - 验证依赖打包:运行
mvn package,在target目录下找到生成的Jar包,用命令jar tf target/你的Jar名称.jar查看,里面应该包含你项目的类和所有依赖的类文件。
内容的提问来源于stack exchange,提问作者Manish Rajput




