gradle: excluding spotlessJava should also exclude spotlessApply
- Lenguaje dominante
- Java
- Estrellas
- 5.6k
- Forks
- 559
- Merge medio
- 1 d 14 h
- PR fusionados (30 d)
- 43
Descripción
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.
Guía de contribución
Línea de trabajo
Empieza reproduciendo la secuencia informada en un proyecto Java usando Gradle, Java 17 y Spotless 6.25.0, especialmente `./gradlew compileJava -xspotlessJava` seguido de `git diff`. Inspecciona cómo están conectados `spotlessJava` y `spotlessApply`; se considera terminado cuando excluir `spotlessJava` deja el árbol de código fuente sin cambios.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- build-system
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100