IntelliJ中Gradle JVM与Project SDK设置的区别及CLI对应关系
IntelliJ中Gradle JVM与Project SDK的区别及CLI对应关系
一、两者的核心区别
- Project SDK:是IntelliJ用来处理项目源码的Java环境——包括编译代码、运行调试、语法检查、代码提示这些IDE层面的操作,全靠这个SDK的版本来支撑。简单说,就是IDE自己干活用的Java。
- Gradle JVM:是给Gradle这个构建工具本身用的Java环境。Gradle自己是个Java程序,需要JVM才能跑,这个设置就是指定IntelliJ启动Gradle守护进程时用哪个JVM。至于项目最终编译出的代码要兼容哪个Java版本,是靠Gradle脚本里的
sourceCompatibility和targetCompatibility配置的,和这个Gradle JVM版本不一定绑定。
二、CLI执行./gradlew build的对应关系及等价概念
- 你用Java 11执行
./gradlew build,对应的是IntelliJ里的Gradle JVM设置。因为./gradlew脚本会用当前环境里的Java来启动Gradle进程,和IntelliJ指定Gradle JVM的作用完全一致——都是给Gradle本身提供运行环境。 - CLI里的等价概念:
- Project SDK的等价物:如果是直接在CLI用
javac、java命令编译运行代码,那就是你当前终端环境中java/javac命令对应的JDK版本。但如果是通过Gradle构建,项目源码的编译版本由Gradle脚本配置控制,CLI里没有和IDE Project SDK完全对应的全局设置,毕竟IDE的Project SDK更多是服务于IDE自身的开发工具链。 - Gradle JVM的等价物:就是终端环境中
JAVA_HOME指向的Java版本,或者你直接通过JAVA_HOME=/path/to/java11 ./gradlew build临时指定的Java版本——这俩都会决定Gradle进程运行时用的JVM。
- Project SDK的等价物:如果是直接在CLI用
内容的提问来源于stack exchange,提问作者rishai
相关产品推荐
相关产品推荐

