当前位置: 首页 > 面试题库 >

如何检查在Gradle构建过程中使用了哪个已安装的JDK

洪星文
2023-03-14
问题内容

这是我的输出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)

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

# 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输出没有差异。因此,我在网上搜索并找到了一些方法(请参阅此处):

  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

所以问题是 如何检查在build过程中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



 类似资料:
  • 我想知道安装了什么版本的virtual env?我的操作系统是Windows10 非常感谢。

  • 问题内容: 在外壳程序脚本中,我正在检查是否已安装此软件包,如果未安装,请先安装它。因此,使用shell脚本: 但它在行停止了shell脚本 在Linux终端中尝试以这种方式查看: 没有任何东西以为已安装。 还有没有其他方法可以在shell脚本中验证此软件包的安装,如果未安装,请同时安装。 问题答案: 是Python语法,因此无法在Shell脚本中使用。 为了测试的版本和,你可以写一个 Pytho

  • 问题内容: 我们需要创建一个程序..实际上我们被要求创建一个软件许可合规性工具....我们如何检查机器内部已安装的软件..是否通过注册表…在搜索时我看到了一个帖子说我们需要研究HKLM的“卸载”子项。 另外,我们是否还从注册表中获取有关该软件是否为免费软件,共享软件的信息? 我们计划使用Python和Mysql做到这一点 问题答案: 正如您已经提到的,可以在注册表中的注册表项下找到(正确)安装的程

  • 问题内容: 我需要检查系统上是否安装了特定程序。例如,我的程序需要检查系统中是否安装了 FireFox 。如果已安装程序,那么我想找到该特定程序的 安装目录 。 我发现了这个,但这不是在Java中。我读了这个,但仍然无法解决这个问题 问题答案: 每个软件(例如Firefox)都会在以下路径下创建它的条目 Firefox也在相同路径下创建它。在我的机器上 是实现这一目标的途径。 此路径的存在确认了F

  • 我无法显示android中已安装应用的play store类别。 最终意图maintent=新意图(Intent.ACTION_MAIN,空);主旨。addCategory(意图。CATEGORY_启动器);最终列表pkgAppsList=上下文。getPackageManager()。查询活动(mainIntent,0);

  • 我在Mac OS High Sierra上使用自制软件安装了gradle。我想检查这个版本,以及它是否成功安装在我的笔记本电脑上。我没有在Android Studio中使用它。