gpt4 book ai didi

java - Gradle 构建过程中使用了哪个已安装的 JDK

转载 作者:行者123 更新时间:2023-12-03 02:48:32 25 4
gpt4 key购买 nike

这是我的 gradle -v 输出(在使用包装器的项目中):

$ ./gradlew -v

------------------------------------------------------------
Gradle 5.0
------------------------------------------------------------

Build time: 2018-11-26 11:48:43 UTC
Revision: 7fc6e5abf2fc5fe0824aec8a0f5462664dbcd987

Kotlin DSL: 1.0.4
Kotlin: 1.3.10
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM: 11.0.1 (Oracle Corporation 11.0.1+13-LTS)
OS: Linux 3.10.0-862.11.6.el7.x86_64 amd64

特别参见这一行:

JVM: 11.0.1 (Oracle Corporation 11.0.1+13-LTS)

我希望切换到 OpenJDK 11。因此选择它,如下所示:

# alternatives --config java

There are 4 programs which provide 'java'.

Selection Command
-----------------------------------------------
* 1 /usr/java/jdk-11.0.1/bin/java
+ 2 /usr/local/jdk-11.0.1/bin/java
3 /usr/java/jre1.8.0_191-i586/bin/java
4 /usr/java/jdk1.8.0_191-amd64/jre/bin/java

Enter to keep the current selection[+], or type selection number: 2

# java -version
openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)

但是 gradle -v 输出没有区别。所以我在网上搜索并找到了一些方法(参见 here ):

  1. 编辑gradle.properties文件

  2. 使用-Dorg.gradle.java.home命令行选项

  3. 编辑build.gradle文件

我用的是前两种方式。两者都有效(为了测试,我切换到 JDK 8,然后运行 ​​build 任务。该任务失败,因为我的代码中的一些新功能不受 Java 8 支持) 。但是gradle -v的结果仍然没有变化!即使使用第二种方式:

# ./gradlew -Dorg.gradle.java.home=/usr/java/jdk1.8.0_191-amd64 -v

------------------------------------------------------------
Gradle 5.0
------------------------------------------------------------

Build time: 2018-11-26 11:48:43 UTC
Revision: 7fc6e5abf2fc5fe0824aec8a0f5462664dbcd987

Kotlin DSL: 1.0.4
Kotlin: 1.3.10
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM: 11.0.1 (Oracle Corporation 11.0.1+13-LTS)
OS: Linux 3.10.0-862.11.6.el7.x86_64 amd64
<小时/>

所以问题是如何在构建过程中检查Gradle使用哪个JDK版本?

最佳答案

您可以添加一个任务,在执行时打印您需要的内容(Kotlin DSL):

tasks {
val j by creating {
doLast {
println(System.getProperty("java.home"))
}
}
}

Groovy DSL:

tasks.register("j") {
doLast {
println System.getProperty("java.home")
}
}

然后执行./gradlew j:

/usr/lib/jvm/java-8-openjdk/jre

为什么gradlew可以使用另一个JVM?看一下这个脚本,您会发现它使用 JAVA_HOME 变量来搜索 JVM。因此,您的 PATH 中的版本可能与 JAVA_HOME 指向的版本不同。

关于java - Gradle 构建过程中使用了哪个已安装的 JDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53761545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com