Maven中jdk版本设置和编码设置

本文介绍了当Maven项目中遇到JDK版本不匹配导致的lambda表达式报错问题时,如何通过修改pom.xml文件和settings.xml文件来解决,以及设置项目编码为UTF-8的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、问题提出

新建一个空的Maven项目,jdk使用的时1.8,但是在代码中使用lambda表达式时报错,查找原因:

  1. 查看项目结构,发现其语言级别为5.0,并不是与我们使用的jdk1.8项对应的8.0
    在这里插入图片描述
  2. 查看编译器版本,发现时1.5,难怪使用lambda表达式会报错呢!
    在这里插入图片描述

二、解决方案

1. 在项目的pom文件中解决

两种实现方式:

方式一:单独设置。在pom文件的properties标签中新增如下内容

<properties>

    <!-- 设置Maven全局变量,使用JDK版本,默认为1.5 -->
    <!-- 源文件(编译时)使用的jdk版本 -->
    <maven.compiler.source>${
   java.version}</maven.compiler.source>
    <!-- 目标字节码文件使用的jdk版本 -->
    <maven.compiler.target>${
   java.version}</maven.compiler.target>

    <!-- 自定义全局变量(多用于版本号的定义), 使用方法${
   lombok.version} -->
    <lombok.version>1.18.16</lombok.version>
    <java.version
### 如何在 Maven 配置文件指定 JDK 版本 #### 使用 `pom.xml` 文件配置 JDK 版本 Maven 提供了一种机制,允许开发者通过 `pom.xml` 的 `<properties>` 和 `<build>` 节点来定义项目的编译选项。具体来说,可以通过设置 `maven.compiler.source` 和 `maven.compiler.target` 属性来指定源码和目标字节码的 JDK 版本。 以下是具体的配置方法: ```xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <!-- 定义项目的基本信息 --> <groupId>com.example</groupId> <artifactId>example-project</artifactId> <version>1.0-SNAPSHOT</version> <!-- 设置 JDK 编译版本 --> <properties> <maven.compiler.source>17</maven.compiler.source> <!-- 指定 Java 源代码版本 [^1] --> <maven.compiler.target>17</maven.compiler.target> <!-- 指定生成的目标字节码版本 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 可选:编码方式 --> </properties> <!-- 插件管理部分 --> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>${maven.compiler.source}</source> <!-- 动态绑定 source 值 --> <target>${maven.compiler.target}</target> <!-- 动态绑定 target 值 [^1] --> </configuration> </plugin> </plugins> </build> </project> ``` 上述配置会告诉 Maven,在构建过程使用 JDK 17 来编译源代码并生成兼容该版本字节码。 --- #### 使用 `settings.xml` 文件全局配置 JDK 版本 如果希望在整个开发环境统一应用某个特定的 JDK 版本,则可以在 Maven 的全局或用户级别的 `settings.xml` 文件进行配置。这种方式适用于多模块项目或者团队协作场景下的集化管理。 以下是一个典型的 `settings.xml` 配置片段: ```xml <settings> <profiles> <profile> <id>java-version-profile</id> <properties> <maven.compiler.source>17</maven.compiler.source> <!-- 全局指定 Java 源代码版本 --> <maven.compiler.target>17</maven.compiler.target> <!-- 全局指定目标字节码版本 --> </properties> </profile> </profiles> <activeProfiles> <activeProfile>java-version-profile</activeProfile> <!-- 启用此 profile --> </activeProfiles> </settings> ``` 当激活这个 Profile 时,所有基于当前环境运行的 Maven 构建都会默认采用所设定的 JDK 版本。 --- #### 注意事项 1. 如果同时在 `pom.xml` 和 `settings.xml` 设置了相同的属性(如 `maven.compiler.source`),则优先级取决于实际使用的上下文。通常情况下,`pom.xml` 的本地配置具有更高的优先级。 2. 对于较新的 Maven 版本,默认插件可能已经内置了一些常用参数的支持,因此有时可以省略显式的 `<plugin>` 部分声明。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值