spotless-maven-plugin: <toggleOffOn/> breaks <forbidWildcardImports/>

Abierto
#2,859 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
java
Área
build-system

Línea de trabajo

Reproduce el problema con la configuración mínima de pom.xml y src/test/java/org/example/ImportMess.java usando mvn spotless:check, comparando primero el comportamiento con y sin . Rastrea los pasos de formateo de Java para toggleOffOn, removeUnusedImports y forbidWildcardImports; se considera completado cuando ambas comprobaciones informan de sus infracciones esperadas sin que una suprima o sustituya a la otra.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

It seems as though adding <toggleOffOn/> somehow interferes with `

Consider the following minimal configuration:

    <build>
        <plugins>
            <plugin>
                <groupId>com.diffplug.spotless</groupId>
                <artifactId>spotless-maven-plugin</artifactId>
                <version>3.1.0</version>
                <configuration>
                    <java>
                        <toggleOffOn/>
                        <removeUnusedImports/>
                        <forbidWildcardImports/>
                    </java>
                </configuration>
            </plugin>
        </plugins>
    </build>

And the following source code:

package org.example;

import java.util.*;
import java.sql.PreparedStatement;

public class ImportMess {
}

With this configuration, running mvn spotless:check will fail on the <removeUnusedInports>:

➜  demo mvn spotless:check
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::staticFieldBase has been called by com.google.inject.internal.aop.HiddenClassDefiner (file:/opt/homebrew/Cellar/maven/3.9.11/libexec/lib/guice-5.1.0-classes.jar)
WARNING: Please consider reporting this to the maintainers of class com.google.inject.internal.aop.HiddenClassDefiner
WARNING: sun.misc.Unsafe::staticFieldBase will be removed in a future release
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< org.example:spotlessdemo >----------------------
[INFO] Building spotlessdemo 1.0-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- spotless:3.1.0:check (default-cli) @ spotlessdemo ---
[INFO] Index file corresponds to a different configuration of the plugin. Either the plugin version or its configuration has changed. Fallback to an empty index
[INFO] Spotless.Java is keeping 1 files clean - 1 needs changes to be clean, 0 were already clean, 0 were skipped because caching determined they were already clean
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.486 s
[INFO] Finished at: 2026-02-22T21:13:20+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:3.1.0:check (default-cli) on project spotlessdemo: The following files had format violations:
[ERROR]     src/test/java/org/example/ImportMess.java
[ERROR]         @@ -1,7 +1,6 @@
[ERROR]          package·org.example;
[ERROR]          
[ERROR]          import·java.util.*;
[ERROR]         -import·java.sql.PreparedStatement;
[ERROR]          
[ERROR]          public·class·ImportMess·{
[ERROR]          }
[ERROR] Run 'mvn spotless:apply' to fix these violations.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

But if you remove <toggleOffOn/>, it will now fail on the <forbidWildcardImports/>:

➜  demo mvn spotless:check
WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::staticFieldBase has been called by com.google.inject.internal.aop.HiddenClassDefiner (file:/opt/homebrew/Cellar/maven/3.9.11/libexec/lib/guice-5.1.0-classes.jar)
WARNING: Please consider reporting this to the maintainers of class com.google.inject.internal.aop.HiddenClassDefiner
WARNING: sun.misc.Unsafe::staticFieldBase will be removed in a future release
[INFO] Scanning for projects...
[INFO] 
[INFO] ----------------------< org.example:spotlessdemo >----------------------
[INFO] Building spotlessdemo 1.0-SNAPSHOT
[INFO]   from pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- spotless:3.1.0:check (default-cli) @ spotlessdemo ---
[INFO] Index file corresponds to a different configuration of the plugin. Either the plugin version or its configuration has changed. Fallback to an empty index
[INFO] Spotless.Java is keeping 1 files clean - 1 needs changes to be clean, 0 were already clean, 0 were skipped because caching determined they were already clean
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.398 s
[INFO] Finished at: 2026-02-22T21:14:20+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:3.1.0:check (default-cli) on project spotlessdemo: Unable to format file /Users/allon/Downloads/demo/src/test/java/org/example/ImportMess.java
[ERROR] Step 'forbidWildcardImports' found problem in 'ImportMess.java':
[ERROR] ImportMess.java:L3 forbidWildcardImports(import java.util.*;) Do not use wildcard imports (e.g. java.util.*) - replace with specific class imports (e.g. java.util.List) as 'spotlessApply' cannot auto-fix this
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

Note:
The <removeUnusedImports/> isn't really important here, I added it just to demonstrate that the project structure is correct and spotless is actually picking up something from that file.

Lenguaje dominante
Java
Estrellas
5.7k
Forks
560
Merge medio
1 d 13 h
PR fusionados (30 d)
43

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de diffplug/spotless

Todos los issues de diffplug/spotless

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.