> Adds the [Java 
> Toolchain](https://docs.gradle.org/current/userguide/toolchains.html#sec:using-java-toolchains)
>  to replace manual executions:
> 
> | Old | New
> |------|------|
> | `JAVA` | 
> [JavaLauncher](https://docs.gradle.org/current/javadoc/org/gradle/jvm/toolchain/JavaLauncher.html)
>  |
> | `JAVAC` | 
> [JavaCompiler](https://docs.gradle.org/current/javadoc/org/gradle/jvm/toolchain/JavaCompiler.html)
>  |
> | `JAVADOC` | 
> [JavadocTool](https://docs.gradle.org/current/javadoc/org/gradle/jvm/toolchain/JavadocTool.html)
>  |
> 
> ## Instructions for reviewers
> 
> The build runs on Windows and Linux (Ubuntu), but the analysis was done on 
> Windows.
> 
> ### JVM detection and selection
> The toolchain selects the JDKs to use based on all those that are made 
> available to it. As detailed in the link above, JDKs can come from various 
> sources on the user machine, including being auto-provisioned. The daemon JDK 
> is always available (usually `JAVA_HOME`), and `gradle.properties` made 
> `JDK_HOME` available in #2240.
> Selection of the toolchain build/worker JDK from all available ones is done 
> internally (as detailed in the link) based on the restrictions configured in 
> the toolchain. I have restricted the major version to that of 
> `jdkVersionInfo` (exact version, not minimum), which is determined by the 
> *build file's JDK resolution*:
> 
> def envJavaHome = cygpath(System.getenv("JDK_HOME"))
> if (envJavaHome == null || envJavaHome.equals("")) envJavaHome = 
> cygpath(System.getenv("JAVA_HOME"))
> def javaHome = envJavaHome == null || envJavaHome.equals("") ? 
> System.getProperty("java.home") : envJavaHome
> 
> However **the selected toolchain JDK might not be the same as the resolved 
> build's JDK**. The toolchain always prefers the daemon JVM to avoid forking, 
> so if it meets the restrictions, it's selected. Consider the following 
> scenarios:
> 
> | `JAVA_HOME` | `JDK_HOME` | Selection                                        
>                       |
> |----------------|---------------|------------------------------------------------------|
> | 25                  | 26                 | `JDK_HOME` - only is passes the 
> restrictions       |
> | 26                  | 25                 | `JDK_HOME` - only is passes the 
> restrictions       |
> | 25/26 Path A | 25/26 Path B | `JAVA_HOME` - internal toolchain preference 
> >:( |
> | 25/26 Path A | 25/26 Path A | `JAVA_HOME`==`JDK_HOME`                       
>         |
> 
> For local testing:
> 1. Stop the daemon with `gradlew --stop`.
> 2. Show the detected toolchains and detection configuration with `gradlew 
> ja...

Nir Lisker has updated the pull request incrementally with one additional 
commit since the last revision:

  Add toolchain also for root

-------------

Changes:
  - all: https://git.openjdk.org/jfx/pull/2294/files
  - new: https://git.openjdk.org/jfx/pull/2294/files/b2820798..ce7469fd

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=jfx&pr=2294&range=01
 - incr: https://webrevs.openjdk.org/?repo=jfx&pr=2294&range=00-01

  Stats: 13 lines in 1 file changed: 11 ins; 1 del; 1 mod
  Patch: https://git.openjdk.org/jfx/pull/2294.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/2294/head:pull/2294

PR: https://git.openjdk.org/jfx/pull/2294

Reply via email to