代码之家  ›  专栏  ›  技术社区  ›  Mir-Ismaili

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

  •  0
  • Mir-Ismaili  · 技术社区  · 6 年前

    这是我的作品 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)
    

    但这两者之间没有区别 输出所以我在网上搜索并找到了一些方法(参见 here ):

    1. gradle.properties 文件

    2. 使用 -Dorg.gradle.java.home

    3. 编辑 build.gradle 文件

    我用了前两种方法。两者都起作用了(为了测试我切换到了 JDK 8 然后跑 build 结果 格拉德尔-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版本 过程

    2 回复  |  直到 6 年前
        1
  •  8
  •   madhead    6 年前

    您可以添加一个在执行时打印所需内容的任务(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 爪哇之家酒店 指的是。

        2
  •  3
  •   Mir-Ismaili    6 年前

    @madhead answer ) 仅适用于使用Gradle守护程序时

    首先,找到 PID gradlew --status here

       PID STATUS   INFO
     11432 IDLE     5.0
    
    Only Daemons for the current Gradle version are displayed. See https://docs.gradle.org/5.0/userguide/gradle_daemon.html#sec:status
    

    然后使用 找到哪个 JDK 用于:

    ll /proc/<PID>/exe
    

    样本输出:

    lrwxrwxrwx. 1 0xy 0xy 0 Jan  5 04:03 /proc/11432/exe -> /usr/local/jdk-11.0.1/bin/java
    

    > wmic process where "processId=<PID>" get Name, ProcessID, ExecutablePath
    

    样本输出:

    ExecutablePath                                     Name      ProcessId
    C:\Program Files\Java\openjdk-11.0.1\bin\java.exe  java.exe  11432