RFR: 8314486: JavaFX build uses deprecated features that will be removed in gradle 8

Ambarish Rapte arapte at openjdk.org
Mon Oct 9 15:05:30 UTC 2023


On Mon, 9 Oct 2023 14:56:39 GMT, Ambarish Rapte <arapte at openjdk.org> wrote:

> This is gradle only change, which fixes few warnings that are observed with gradle 7.6 and which eventually result to an error with gradle 8.3
> With this change the warnings get fixed and no error is observed with gradle 8.3
> Verified that several gradle tasks(all, sdk, javadoc, apps, shims, test) complete without any failure.
> 
> Warnings that are fixed:
> 1. The SourceDirectorySet.outputDir property has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use the classesDirectory property instead. See https://docs.gradle.org/7.6/dsl/org.gradle.api.file.SourceDirectorySet.html#org.gradle.api.file.SourceDirectorySet:outputDir for more details.
> -> As per this [7.x to 8.0 upgrade guide](https://docs.gradle.org/8.0/userguide/upgrading_version_7.html#sourcedirectoryset_api_cleanup) outputDir should be replaced with `destinationDirectory`
> 
> 2. The AbstractCompile.destinationDir property has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use the destinationDirectory property instead. Consult the upgrading guide for further information: https://docs.gradle.org/7.6/userguide/upgrading_version_7.html#compile_task_wiring
> -> As per the above doc, replacing `destinationDir` with `destinationDirectory` resolves the warning
> 
> 3. Various dependency warnings like one below:
> Gradle detected a problem with the following location: '<path>/rt/modules/javafx.base/build/module-classes'. Reason: Task ':base:modularJarStandaloneMac' uses this output of task ':base:buildModuleMac' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Please refer to https://docs.gradle.org/7.6/userguide/validation_problems.html#implicit_dependency for more details about this problem.
> -> There are several such warning messages observed.
> -> Each warning required an explicit inclusion of dependency. All dependency changes are to fix this warning.
> 
> An easy way to review would be.
> 1. Build with gradle 7.6 (using  `--warning-mode all`  gradle option)
> 1.1 All above warnings can be observed and build completes successfully.
> 
> 2. Build with gradle 8.3 (using  `--warning-mode all`  gradle option)
> 2.1 Without this change build would fail citing above warnings as errors
> 2.2 With this change build completes successfully and above warnings do not occur

build.gradle line 5168:

> 5166:         if (project.tasks.getByName("modularPublicationJar$t.capital") != null) {
> 5167:             project.tasks.getByName("modularPublicationJar$t.capital").dependsOn(buildModuleClassesTask)
> 5168:         }

The null check here is required as `project` can be the `rootProject`, which does not have those tasks and so would result in build failure with an error.
The failure can be observed by removing the null checks.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1256#discussion_r1350422541


More information about the openjfx-dev mailing list