idea开发java项目的jdk版本到底是啥,傻傻分不清

java项目的jdk版本到底是啥,傻傻分不清

在开发项目时,我经常能看到四个选择jdk的地方,我一直不知道他们都是什么作用,使用是都把他们设置成一样的:

idea -> file -> project structure -> project-sdk

请添加图片描述

idea -> file -> project structure -> platform seetings -> sdks
请添加图片描述

pom.xml文件中:

<properties>
    <java.version>8</java.version>
</properties>

pom.xml文件中:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
  </configuration>
</plugin>

区别:

  1. IntelliJ IDEA 设置:FileProject StructureProject SDK

这是在 IntelliJ IDEA 中为整个项目指定 Java 开发工具包(SDK)的途径。选择的 SDK 决定了 IDEA 在编译、运行和调试项目时使用的 Java 版本。这里的设置直接影响到 IDE 的代码提示、语法检查、代码补全、代码分析等功能是否与选定的 Java 版本兼容。此外,IDEA 也会依据此设置来构建项目、运行单元测试等。

  1. IntelliJ IDEA 设置:FileProject StructurePlatform SettingsSDKs

这一部分是 IDEA 管理全局可用的 SDK 列表。在这里,您可以添加、删除、编辑各种类型的 SDK(包括 Java、Android、Python 等),并指定它们的位置。设置项目 SDK 时,会从这个列表中选择一个已有的 Java SDK。这里的操作不会直接影响单个项目,而是影响所有使用 IDEA 的项目。

  1. pom.xml 文件中的 <properties><java.version>8</java.version></properties>

在 Maven 项目中,<properties> 标签内的 java.version 属性是一种约定俗成的变量名,用于表示项目期望使用的 Java 版本。通常,这个属性值会被其他插件或配置引用,比如在 <maven-compiler-plugin> 的配置中。这样做有利于保持版本信息的统一和易于维护。单独设置 java.version 不会直接改变项目的编译行为,它需要与其他配置配合使用。

  1. pom.xml 文件中的 maven-compiler-plugin 配置:
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
  </configuration>
</plugin>

这是明确指定 Maven 编译项目的源代码和目标字节码所使用的 Java 版本。<source> 指定源代码兼容的最低 Java 版本,<target> 指定生成的目标字节码所遵循的 Java 版本。当执行 mvn compile 命令时,Maven 会根据这个插件的配置来编译项目。即使 IntelliJ IDEA 中设置了不同的项目 SDK,直接通过 Maven 构建时仍会使用此处指定的版本。

实际运行时使用哪个版本?

  • 在 IntelliJ IDEA 中:当您使用 IDEA 的内置构建工具(如 Build、Rebuild、Make)或运行/调试功能时,IDE 会优先使用您在 Project StructureProject SDK 中指定的 Java 版本来编译和运行项目。这意味着即使 pom.xml 中配置了不同的 Java 版本,IDEA 内部操作仍可能使用您指定的 SDK 版本。

  • 通过 Maven 构建:当您在命令行或通过 IDEA 中的 Maven 插件执行 mvn compilemvn packagemvn install 等命令时,Maven 会根据 maven-compiler-plugin 的配置(如上面示例所示)来编译项目。此时,项目实际使用的 Java 版本由 maven-compiler-plugin<source><target> 配置决定,不受 IDEA 中项目 SDK 设置的影响。

总结

  • IDEA 设置Project SDKPlatform SettingsSDKs)影响 IntelliJ IDEA 内部编译和运行项目的行为。
  • Maven pom.xml 中的配置(特别是 maven-compiler-plugin)决定了在使用 Maven 命令行或插件构建项目时的 Java 版本。

实际运行时使用哪个版本,取决于是通过 IntelliJ IDEA 的内置工具还是通过 Maven 命令行/插件来编译和运行项目。为了确保一致性,还是和我一开始说的在 IDEA 设置和 pom.xml 中均指定相同的 Java 版本就行了。

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值