RFR: 8263760: Update gradle to version 7.0.1

Crazyjavahacking github.com+1445818+crazyjavahacking at openjdk.java.net
Wed May 12 18:37:25 UTC 2021


On Wed, 12 May 2021 14:54:09 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:

> This PR fixes the gradle deprecation warnings described in [JDK-8240336](https://bugs.openjdk.java.net/browse/JDK-8240336) and updates the JavaFX build to use gradle 7.0.1 as described in [JDK-8263760](https://bugs.openjdk.java.net/browse/JDK-8263760). The minimum version of gradle is set to 6.3.
> 
> In addition to keeping gradle up to date, updating to gradle 7 will allow building and testing JavaFX with JDK 16.
> 
> I have done a full build and test on all three platforms, comparing the artifacts produced before and after this change.
> 
> ### Notes to Reviewers:
> 
> The PR branch has two separate commits, one for each fix, in case reviewers want to look at them separately. As always, they will be squashed into a single commit when integrated. Both bug IDs will be listed in the commit.
> 
> The following changes were done for [JDK-8240336](https://bugs.openjdk.java.net/browse/JDK-8240336) to eliminate the use of deprecated features removed in gradle 7:
> 
> 1. Replaced `compile` with either `implementation` or `compileClasspath` as needed
> 2. Replaced obsolete `archiveName` and `destinationDir` properties in archive tasks with `archiveFileName` and `destinationDirectory`
> 3. Added missing `@Input` annotation to custom Groovy task properties
> 4. Bumped the minimum version of gradle to 6.3 (which we have been using for more than 1 year)
> 
> 
> The following changes were done for [JDK-8263760](https://bugs.openjdk.java.net/browse/JDK-8263760) to update to gradle 7.0.1:
> 
> 1. Ran `bash ./gradlew wrapper --gradle-version=7.0.1`
> 2. Updated the gradle version in `build.properties` to `7.0.1`
> 3. Updated the SHA-256 checksum in `gradle/wrapper/gradle-wrapper.properties`

buildSrc/src/main/groovy/com/sun/javafx/gradle/CCTask.groovy line 34:

> 32:     @Optional @Input List<String> linkerOptions = new ArrayList<String>();
> 33:     @Optional @InputDirectory File headers;
> 34:     @Optional @Input Closure eachOutputFile; // will be given a File and must return a File

Is this field actually used anywhere?

As this field is not initialized + there is the `@Optional` annotation, Gradle will not verify this is fine. Gradle docs is specifying that:
1. `@Input` can be used on Closure if it is a provider of `File` (which means no param in closure).
2. `@Input` can be used for any `Serializable` which `Closure` actually is.

It's not obvious if Gradle will correctly handle `Closure` taking argument.

buildSrc/src/main/groovy/com/sun/javafx/gradle/NativeCompileTask.groovy line 44:

> 42:     @Optional @Input String matches; // regex for matching input files
> 43:     @Input List<String> params = new ArrayList<String>();
> 44:     @Input List sourceRoots = new ArrayList();

Shouldn't this be `@Internal`?:

1. `updateFiles()` uses `sourceRoots` and maps that into the `allFiles` field, which has already `@InputFiles`. If the `sourceRoots` is changed in a way that does not affect `allFiles`, this task can remain `UP_TO_DATE` and save task execution.

gradlew line 47:

> 45: 
> 46: # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
> 47: DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'

This is automatically generated by Gradle, but the heap memory seems to be too low.

+ the same for `gradlew.bat`

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

PR: https://git.openjdk.java.net/jfx/pull/498


More information about the openjfx-dev mailing list