Как проверить, какой установленный JDK использовался в процессе сборки Gradle - PullRequest
0 голосов
/ 13 декабря 2018

Это был мой вывод 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 file

Я использовал первые два способа.Оба работали (для тестирования я переключился на 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

Поэтому вопрос как проверить, какая версия JDK используется Gradle во время build процесса?

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Я нахожу альтернативный способ (кроме @ madhead answer ) только для использования демона Gradle :

Сначала найдитеPID демона, запустив gradlew --status (см. здесь для получения дополнительной информации).Пример вывода:

   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

Затем используйте PID, чтобы найти, какой 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

В Windows:

> 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 
0 голосов
/ 13 декабря 2018

Вы можете добавить задачу, которая печатает то, что вам нужно при выполнении (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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...