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