diffplug / diffplug/spotless

Register dependencies task produces output outside of the configured build directory

Offen
#1,173 1 Kommentar 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Java
Sterne
5.6k
Forks
559
Ø Merge
1 T. 14 Std.
Gemergte PRs (30 T.)
43

Beschreibung

This issue is about the Gradle plugin.

When a project’s build directory is modified by a plugin, then, depending on the order of plugins application, the Spotless plugin may create the `spotless-register-dependencies` file in a wrong location.

This most likely happens because the [register dependencies task’s](https://github.com/diffplug/spotless/blob/4600bc36f7f23522037b3febf6a98ba6131cfbed/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/RegisterDependenciesTask.java#L78-L83) output file property is not lazy, and therefore is configured/resolved to its final value during the configuration phase, when the plugin is applied, which introduces a dependency on the order of plugins application — if the plugin which configures the build directory is applied later than Spotless, then Spotless will use incorrect value of the build directory.

As a general rule, in Gradle it is recommended to use [lazy properties](https://docs.gradle.org/current/userguide/lazy_configuration.html) for all kinds of properties which are exposed on tasks and extensions, especially input/output files or directories, and providers returning files/directories are usually obtained from `project.layout`.

- Gradle version: 7.4.2
- Spotless plugin version: 6.4.2

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne bei der verknüpften Ausgabedatei-Property in plugin-gradle/src/main/java/com/diffplug/gradle/spotless/RegisterDependenciesTask.java und verfolge anschließend, wie das Build-Verzeichnis während der Plugin-Konfiguration ermittelt wird. Überprüfe den Ausgabeort der Task, wenn ein anderes Plugin das Build-Verzeichnis ändert, nachdem Spotless angewendet wurde; fertig bedeutet, dass die register-dependencies-Datei unabhängig von der Plugin-Reihenfolge dem konfigurierten Verzeichnis folgt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
build-system
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.