gradle: excluding spotlessJava should also exclude spotlessApply
- Vorherrschende Sprache
- Java
- Sterne
- 5.6k
- Forks
- 559
- Ø Merge
- 1 T. 14 Std.
- Gemergte PRs (30 T.)
- 43
Beschreibung
When running `gradle compileJava -xspotlessJava`, `spotlessApply` will still run. Since `spotlessApply` copies files from build/spotless/spotlessJava to the source tree, this can overwrite unsaved work in progress, making teams **lose valuable work** due to a simple misunderstanding. Since this is a silent overwrite, team might also not notice that changes have been made, allowing **bugs to enter the codebase**.
`spotlessApply` should only ever run when the files it copies were created as part of the same build, to ensure no work is lost.
This happened on a company project, so I cannot quickly produce a public repo, but I could if need be. The steps to reproduce would be (in a java project using the spotless plugin...):
```
git clone ...
cd ...
// assuming this will have some file that can be formatted
./gradlew compileJava
git reset --hard
git checkout other_branch
// assuming some file from earlier branch is different here
./gradlew compileJava -xspotlessJava
git diff
```
The last git diff should not have any changes. However, currently for me this overwrites the source file with the spotless output from the ./gradlew compileJava task.
Using gradle8, java17, spotless 6.25.0 on MacOs.
Beitragsleitfaden
Rechercherichtung
Beginne damit, die gemeldete Sequenz in einem Java-Projekt mit Gradle, Java 17 und Spotless 6.25.0 zu reproduzieren, insbesondere `./gradlew compileJava -xspotlessJava` gefolgt von `git diff`. Untersuche, wie `spotlessJava` und `spotlessApply` miteinander verbunden sind; als abgeschlossen gilt die Aufgabe, wenn das Ausschließen von `spotlessJava` den Quellbaum unverändert lässt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- java
- Bereich
- build-system
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100